如何在VB.NET中为按钮创建控件数组?就像在Visual Basic 6.0中一样......
语法是否可能如下所示?
dim a as button
for each a as button in myForm
a.text = "hello"
next
答案 0 :(得分:2)
.NET中的控件只是普通对象,因此您可以将它们自由地放入普通数组或列表中。不再需要特殊的VB6控件数组结构。
所以你可以说,
Dim buttons As Button() = { Button1, Button2, … }
For Each button As Button In Buttons
button.Text = "foo"
End For
或者,您可以直接遍历容器内的控件(例如表单):
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
请注意,这仅适用于表单上直接的控件;嵌套到容器中的控件不会以这种方式迭代;但是,您可以使用递归函数迭代所有控件。
答案 1 :(得分:1)
您无法在VB.NET中创建控件数组,但可以使用Handles
关键字存档类似的功能。
public sub Button_Click(sender as Object, e as EventArgs) Handles Button1.Click, Button2.Click, Button3.Click
'Do Something
End Sub
是的,你可以这样做。但我不认为你可以通过给myForm直接迭代按钮。
答案 2 :(得分:1)
您创建一个表单并添加一个布局10 * 10,然后尝试这个,
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