循环遍历groupbox中的文本框会产生奇怪的结果

时间:2011-07-07 23:35:08

标签: vb.net textbox for-loop groupbox

我有以下代码:

    For Each control2 As Control In GroupBox3.Controls
        If TypeOf control2 Is TextBox Then
            Dim txt2 As TextBox = TryCast(control2, TextBox)
            If counter > totalBoxes Then
                totalBoxes += 1
                txt2.Text = grade(totalBoxes)
            End If
        End If
    Next

我正在做的是循环遍历groupbox3中的每个文本框。然后检查计数器(表单中输入的成绩总数)是否大于totalBoxes(设置为0),最后我将实际成绩(A,B,C,D)放入文本框中。问题是它在文本框8(我有10个文本框)开始循环由于某种原因并从那里开始。有谁知道我的代码有什么问题?

亚伦

2 个答案:

答案 0 :(得分:2)

好吧,文本框的名称与其父文件的.Controls集合中的索引无关。

您可以做的一件事是将每个控件的.tag属性设置为您想要传递到成绩函数的索引。

textbox1.Tag = 1
textbox2.Tag = 2
...

这样,您不必担心迭代时文本框的顺序。

答案 1 :(得分:0)

For Each box As TextBox In GroupBox3.Controls.OfType(Of TextBox).OrderBy(Function(t) t.Name)
    If counter > totalBoxes Then
        totalBoxes += 1
        box.Text = grade(totalBoxes)
    End If
Next box