Son una serie de pasos algo complicados pero sencillos
paso 1: Crea un método en tiempo de diseño quitando en "handles" y dándole el nombre que desees dejando dentro como parámetro el sender y el eventargs, es decir, inserta cualquier checkbox dale doble click y después borras el control, de esta forma e indicándote lo que te acabo de explicar te quedará una función así:
Código:
Private Sub tuCheckX_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
paso 2: le insertas código, para ello tendrías que ocupar el sender, casi nadie o mejor dicho nadie sabe por que lo coloca el manejador allí, bueno, puedes usarlo para controlar varios objetos, esto es:
Código:
Private Sub tuCheckX_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
If CType(sender,CheckBox).Name = "check1" Then
...
ElseIf CType(sender,CheckBox).Name = "check2" Then
...
ElseIf CType(sender,CheckBox).Name = "checkN" Then
.
.
.
End If
End Sub
En cada pedazo de IF irá el código alusivo a lo que tu necesites, ese método tu lo mueves como se te antoje
Paso 3: lo bueno es asignarlo, para ello:
Código:
For i=1 To (matriz.Length)Dim x As New CheckBox
x.Name = "check" & i
x.Text = "check box numero " & i
'no te olvides de especificar su location
panel.Controls.Add(x)
'ASIGNAMOS EL MÉTODO CREADO POR TI
Dim n As New EventHandler(AddressOf tuCheckX_CheckedChanged)
'ASIGNAMOS EL HANDLER Y TODO LISTO
AddHandler x.CheckedChanged, n
Next i
y, cuando ejecutes tu aplicación, cada check box que creaste con la matriz se vinculara con el método antes asignado en el punto 1.
Espero te haya servido este pequeño tutorial, si te confundes por aquí andamos para cualquier cosa