I think I found the solution, I'm not the only former VB6 developer who has struggled with this limitation. A long time ago, I tried to migrate software, but I failed because it had a tough dependency on control arrays. I read many forums and I was able to write this simple code:
Public Class Form1
'To declare the List of controls
Dim labels As New List(Of Label)()
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'To get all controls in the form
For Each control In Me.Controls
'To search for the specific type that you want to create the array
If control.[GetType]().Name.Contains("Label") Then
'To add the control to the List
labels.Add(DirectCast(control, Label))
End If
Next
'To sort the labels by the ID
labels = labels.OrderBy(Function(x) x.Name).ToList()
End Sub
End Class
I used a List for convenient reasons, but with that piece of code, you can create in design time the controls that you need and while you keep the "index" as the last characters (label1, label2, ..., labelN)
Later, you can iterate them with the loop and add them in the blink of an eye. Next, you are going to be able to manipulate them from the object with labels(0), labels(1), etc.
I hope this piece of code, it's going to help more programmers in the future.
vb6-migration
tag. You may wish to order some flame-resistant underwear before approaching the hoops (or reading some of the posts) :( – Brave