将控件分组到一个数组中并访问它们的属性
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}
我想(在属于form1
class的一个函数中):
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
我在classform1
Dim ArrayTextBoxes() as Textbox = new Textbox() {textbox1, textbox2}
以及匹配长度的标签数组
Dim ArrayLabels() as Label = new Label() {label1, label2}
我想(在属于form1
class的一个函数中):
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