我设置了20多个文本框,我尝试做的是从每个文本框中取出值并将其放置一个值数组(结构)。我的每个文本框都有一个名称为txtScore00,01,02等等,我试图用计数器循环它们并使用计数器作为变量名中的数字。我找到了这个话题Concatenate Variable Names in VB,但我仍然无法让它发挥作用。有什么建议?我的代码填充了数组:
For intCountOne = 0 To aStudent.Length - 1
For intCountTwo = 0 To aStudent(intCountOne).decGrade.Length - 1
aStudent(intCountOne).decGrade(intCountTwo) = Me.Controls("tbScore" & intCountOne & intCountTwo).Text
答案 0 :(得分:1)
你有:
Me.Controls("tbScore" & intCountOne & intCountTwo)
这要求TextBox包含在Form中直接。如果他们在不同的容器中,例如面板,那么您需要更改" Me"到容器的名称(例如" Panel1")。
或者,您可以搜索表单以获取具有该名称的控件,如果TextBox在多个容器上展开(如果它们全部在其中,它仍然有用),这非常有用同一个容器)。
这是一个简单的例子:
Dim matches() As Control
For intCountOne = 0 To aStudent.Length - 1
For intCountTwo = 0 To aStudent(intCountOne).decGrade.Length - 1
matches = Me.Controls.Find("tbScore" & intCountOne & intCountTwo, True)
If matches.Length > 0 AndAlso TypeOf matches(0) Is TextBox Then
Dim tb As TextBox = DirectCast(matches(0), TextBox)
aStudent(intCountOne).decGrade(intCountTwo) = tb.Text
End If
Next
Next