Código vb:
Ver originalSub CARGAR_MENU()
Dim dv As New DataView(CLASE_SUBMENU.LISTAR_SUBMENU("Usp_Listar_Menu_02"))
Dim cantidad As Integer = dv.Count
Dim x As Integer = 3, y As Integer = 3
If cantidad > 0 Then
For i As Integer = 0 To cantidad - 1
ReDim Preserve ARBOL(i)
ARBOL(i) = New TreeView
ARBOL(i).Name = dv.Item(i)(0)
ARBOL(i).Nodes.Add(Trim(dv.Item(i)(1)))
ARBOL(i).CheckBoxes = True
ARBOL(i).BorderStyle = BorderStyle.None
ARBOL(i).BackColor = System.Drawing.SystemColors.Control
ARBOL(i).SetBounds(x, y, 172, 152)
'Con esto agregas el mismo manejador para todos controles dentro del 'array
AddHandler ARBOL(i).AfterCheck , AddressOf AfterCheckManejador
Me.pnMenu.Controls.Add(ARBOL(i))
x += 182
Dim codigo As String = Trim(dv.Item(i)(0))
Dim dv2 As New DataView(CONSULTAR(codigo))
Dim cant2 As Integer = dv2.Count
If cant2 > 0 Then
For j As Integer = 0 To cant2 - 1
ARBOL(i).Nodes(0).Nodes.Add(dv2.Item(j)("cod_opc"), StrConv(Trim(dv2.Item(j)("nom_opc")), VbStrConv.ProperCase))
Next
End If
ARBOL(i).ExpandAll()
dv2.Dispose()
Next
End If
dv.Dispose()
End Sub
Con este código agregas el manejador a cada uno de los controles dentro de la colección de objetos.