将控件分组到一个数组中并访问它们的属性

Grouping Controls into an array and accessing their properties

我在classform1

范围内有一个数组
Dim ArrayTextBoxes() as Textbox = new Textbox() {textbox1, textbox2}

以及匹配长度的标签数组

Dim ArrayLabels() as Label = new Label() {label1, label2}

我想(在属于form1class的一个函数中):

For i = 0 to ArrayTextBoxes.Count - 1
    ArrayTextBoxes(i).Enabled = True
    ArrayTextBoxes(i).ReadOnly = True
    ArrayTextBoxes(i).BackColor = Color.Gray
    ArrayLabels(i).BackColor = Color.Gray
Next

但是ArrayTextBoxes(i)returnsNothing

我还需要这个来为 ComboBox()CheckBox()

工作

大概这些是成员变量而不是局部变量,即在 class 级别而不是在方法中声明。如果是这样的话,一方面,您应该使用 Private 而不是 Dim。至于问题,是因为该代码是在构造函数执行之前执行的,因此尚未创建控件。您需要在您所在的位置声明变量,但创建数组并将它们分配给 Load 事件处理程序中的那些变量,例如

Private textBoxes As TextBox()

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    textBoxes = {TextBox1, TextBox2}
End Sub