我记得在vb6中你可以创建文本框数组。
Textbox1(0), Textbox1(1) ..... ,
但是在vb.net中你无法创建阵列?所以如果你有这样的代码。是否有可能将其设置为for循环?
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
TextBox8.Text = ""
TextBox9.Text = ""
TextBox10.Text = ""
TextBox11.Text = ""
TextBox12.Text = ""
TextBox13.Text = ""
TextBox14.Text = ""
TextBox15.Text = ""
答案 0 :(得分:7)
如果TextBox控件只在主窗体上,那么你可以遍历它们:
For Each tb As TextBox In Me.Controls.OfType(Of TextBox)()
tb.Text = String.Empty
Next
如果他们在面板中,请将Me
关键字替换为面板名称。
答案 1 :(得分:2)
您可以创建一个List并循环遍历它:
Dim boxes As New List(Of TextBox)() From { _
TextBox1, _
TextBox2 _
}
boxes.Add(TextBox3)
For Each tb As TextBox In boxes
tb.Text = ""
Next
如果你在其他控件(如Panel或GroupBox)中有一个带有TextBox控件的Form,你可以尝试使用这样的递归函数来获取它们。 (这基本上是答案C# to VB conversion)的here
Private Function GetTextBoxes(root As Control) As IEnumberable(Of TextBox)
Dim container = TryCast(root, ContainerControl)
If container IsNot Nothing Then
For Each c As Control In container.Controls
For Each i As Control In GetTextBoxes(c)
Yield i
Next
Next
End If
End Function
从主表单创建列表:
Dim allBoxes As List(Of TextBox) = GetTextBoxes(Me).ToList()
答案 2 :(得分:2)
作为参考,您可以通过以下方式创建TextBox对象数组:
Dim tbArray() As TextBox = New TextBox() {TextBox1, TextBox2, TextBox3}
或者,声明数组并循环遍历TextBox控件以将它们添加到它。但是,List(Of TextBox)
方法可以正常工作,如果您需要保留它们的集合,或者只需要在表单上循环TextBox控件,如果您只需要在一个子函数或函数中设置属性。