在.Net VB中传递的变量名的串联

时间:2014-11-20 21:53:55

标签: .net vb.net concatenation

我设置了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

1 个答案:

答案 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