Matriz de control en VB.NET

¿Cómo hago una matriz de control para botones en VB.NET? Como en Visual Basic 6.0 …

¿Es posible que la syntax sea como la siguiente?

dim a as button for each a as button in myForm a.text = "hello" next 

Los controles en .NET son solo objetos normales, por lo que puede colocarlos libremente en matrices o listas normales. La construcción especial VB6 de matrices de control ya no es necesaria.

Entonces puedes decir, por ejemplo,

 Dim buttons As Button() = { Button1, Button2, … } For Each button As Button In Buttons button.Text = "foo" End For 

Alternativamente, puede iterar directamente sobre los controles dentro de un contenedor (por ejemplo, un formulario):

 For Each c As Control In MyForm.Controls Dim btt As Button = TryCast(c, Button) If btt IsNot Nothing Then ' We got a button! btt.Text = "foo" End If End For 

Tenga en cuenta que esto solo funciona para los controles que están directamente en el formulario; los controles nesteds en contenedores no se iterarán de esta manera; sin embargo, puede usar una función recursiva para iterar sobre todos los controles.

Usted crea un Formulario y agrega un Diseño 10 * 10, y prueba esto,

 Public Class Form1 Private NRow As Integer = 10 Private NCol As Integer = 10 Private BtnArray(NRow * NCol - 1) As Button Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TableLayoutPanel1.Size = Me.ClientSize For i As Integer = 0 To BtnArray.Length - 1 BtnArray(i) = New Button() BtnArray(i).Anchor = AnchorStyles.Top Or AnchorStyles.Bottom Or AnchorStyles.Left Or AnchorStyles.Right BtnArray(i).Text = CStr(i) TableLayoutPanel1.Controls.Add(BtnArray(i), i Mod NCol, i \ NCol) AddHandler BtnArray(i).Click, AddressOf ClickHandler Next End Sub Public Sub ClickHandler(ByVal sender As Object, ByVal e As System.EventArgs) MsgBox("I am button #" & CType(sender, Button).Text) End Sub End Class 

No puede crear una matriz de control en VB.NET, pero puede archivar una funcionalidad similar con la palabra clave Handles .

 public sub Button_Click(sender as Object, e as EventArgs) Handles Button1.Click, Button2.Click, Button3.Click 'Do Something End Sub 

Sí, usted puede hacer esto. Pero no creo que puedas iterar los botones directamente dando myForm.