我有以下代码:
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个文本框)开始循环由于某种原因并从那里开始。有谁知道我的代码有什么问题?
亚伦
答案 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