在变量名称中使用变量

时间:2015-08-05 23:59:48

标签: vb.net winforms

在PHP和其他一些语言中,我知道程序有一种方法可以使用Visual Basic.NET动态调用控件的名称吗?

例如:如果你在WinForm上有一个名为txtQuestionValue15.text的控件,有没有办法设置某种循环来返回并通过1到14并禁用它们,或者我是否必须手动编辑。

我正在考虑使用类似SELECT Case语句的内容来尝试:

    Select Case trkNoOfQuestions.Value
        Case 1
        Case 2
        Case 3
        Case 4
        Case 5
        Case 6
        Case 7
        Case 8
        Case 9
        Case 10
        Case 11
        Case 12
        Case 13
        Case 14
        Case 15
            ' Enable Question 15
            txtQuestionTL15.Enabled = True
            txtQuestionTL15.Text = 45
            txtQuestionValue15.Enabled = True
            txtQuestionValue15.Text = 1000000

    End Select

1 个答案:

答案 0 :(得分:2)

您可以使用循环和字符串来查找控件。您必须检查它们所在的控件集合 - 这里我使用的是表单。

For i As Integer = 1 To 15
 Dim tb As Textbox = TryCast(Me.Controls("txtQuestionTL" & i.ToString), Textbox)
 If Not tb Is Nothing Then 
 'now you have the textbox based on the name
 End If
Next

或者,无论他们居住在哪个容器中,您都可以进行搜索:

For i As Integer = 1 To 15
 Dim tbs = Me.Controls.Find("txtQuestionTL" & i.ToString, True)
 If tbs.Count > 0 Then
   Dim tb As TextBox = tbs.First 
 End If
Next