循环遍历vb.net中的文本框

时间:2015-06-02 19:12:08

标签: vb.net

我记得在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 = ""

3 个答案:

答案 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控件,如果您只需要在一个子函数或函数中设置属性。