VB.NET中的控件数组

时间:2011-03-31 08:58:30

标签: vb.net

如何在VB.NET中为按钮创建控件数组?就像在Visual Basic 6.0中一样......

语法是否可能如下所示?

 dim a as button

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

3 个答案:

答案 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
相关问题