在VB6中有一个名为Control Arrays的功能,您可以在其中为控件命名相同的名称并为其提供索引值.这允许您通过循环控件和设置每个值来设置值.在VB .NET中我无法创建控件数组,有人可以为我提供类似的解决方案.
dwi*_*del 13
以下是我为其他内容编写的示例,该示例演示了如何执行类似操作并显示如何执行处理程序.这使得10x10网格的按钮在您单击时变为红色.
Dim IsCreated(99) As Boolean
Dim Buttons As New Dictionary(Of String, Button)
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
For i As Integer = 0 To 99
Dim B As New Button
Me.Controls.Add(B)
B.Height = 30
B.Width = 40
B.Left = (i Mod 10) * 41
B.Top = (i \ 10) * 31
B.Text = Chr((i \ 10) + Asc("A")) & i Mod 10 + 1
Buttons.Add(B.Text, B)
B.Tag = i
AddHandler B.Click, AddressOf Button_Click
Next
End Sub
Private Sub Button_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim B As Button = sender
IsCreated(B.Tag) = True
B.BackColor = Color.Red
End Sub
Run Code Online (Sandbox Code Playgroud)
避免使用建议的迭代方法,除非您的表单非常简单,否则您将获得相当随机的控件集合.只需在代码中声明控件数组并在表单构造函数中初始化它.像这样:
Public Class Form1
Private OrderNumbers() As TextBox
Public Sub New()
InitializeComponent()
OrderNumbers = New TextBox() {TextBox1, TextBox2}
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
您现在可以像在VB6中一样处理OrderNumbers.
使用 Winforms,您可以这样做:
myForm.Controls _
.OfType(Of TextBox) _
.OrderBy(Function(c) c.Name) _
.Where(Function(c) c.Name.StartsWith("somePrefix")) _
.ToArray()
Run Code Online (Sandbox Code Playgroud)
在您的表单上,您可以命名您的文本框somePrefix1,somePrefix2等等。
这是一篇旧文章,但它可以为您提供更多信息。最上面的方法非常简单。