[MODIFICADO]Los arrays de controles en VB.NET se crean con variables de objetos
Ejemplo sencillo
Dim MiLabel As Label
MiLabel = New Label
MiLabel.Text = "Hola mundo"
Me.Controls.Add(MiLabel)
Puedes declararlo de forma general para poder ser creado dentro de cualquier evento. En este ejemplo se declara el objeto y desde el un botón se le asigna una propiedad y se añade al Form.
Public Class Form1
Dim MiLabel As New Label
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
MiLabel.Text = "Hola mundo"
Me.Controls.Add(MiLabel)
End Sub
End Class
Y por último lo mismo pero creando un
array para las etiquetas y un botón además del
evento Click para dicho botón. (Mas tarde he modificado el código y añadí
eventos a la matriz de etiquetas 'Label' tras volver a leer tu duda)
Public Class Form1
Dim MiLabel(5) As Label
Dim MiBoton As New Button
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.Width = 200 : Me.Height = 300
With MiBoton 'Propiedades para el botón
MiBoton.Text = "Crear Labels"
MiBoton.Location = New Point(20, 20)
End With
Me.Controls.Add(MiBoton) 'Añade el control al formulario Form1
AddHandler MiBoton.Click, AddressOf MiBoton_Click 'Vincula MiBoton con el evento MiBoton_Click y evento Click
End Sub
Private Sub MiBoton_Click(sender As Object, e As EventArgs)
Dim iTop As Integer = 30
For I As Integer = 0 To MiLabel.Count - 1
iTop += 20
MiLabel(I) = New Label 'Crea los 6 Labels
With MiLabel(I) 'Asigna propideades
.Text = "Label " & (I + 1)
' .Top = iTop
' .Left = 20
.Location = New Point(20, iTop)
.Font = New Font("Calibri", 12)
End With
Me.Controls.Add(MiLabel(I)) 'Añade los seis Labels al formulario.
Next
For I As Integer = 0 To MiLabel.Length - 1
AddHandler MiLabel(I).Click, AddressOf MiLabel_Click 'Vincula MiLabel con el evento MiLabel_Click y evento Click
Next
End Sub
Private Sub MiLabel_Click(sender As Object, e As EventArgs)
Dim Index As Integer = Array.IndexOf(MiLabel, sender)
If Index.Equals(0) Then MiLabel(0).Text = "Hiciste Click"
If Index.Equals(1) Then MiLabel(1).Text = "Hiciste Click"
End Sub
End Class
Mírate también otras aportaciones de otros usuarios
https://foro.elhacker.net/net_c_vbnet_asp/crear_controles_en_tiempo_de_ejecucion-t445828.0.html;msg2051279#msg2051279https://foro.elhacker.net/net_c_vbnet_asp/crear_controles_en_tiempo_de_ejecucion-t445828.0.html;msg2051365#msg2051365y recuerda usar el método Control.Dispose() cuando ya no lo vayas a usar para eliminar el objeto y liberar memoria.