用另一个变量动态调用另一个变量名

时间:2015-11-11 16:20:47

标签: vb.net

目前我有以下几行代码:

    Dim ta = frmControllerScreen.Controls.Find("txtResponseA", True)
    If ta.Count > 0 Then
        Dim txt As TextBox = ta.First
        txtResponseA = txt.Text
    End If

    Dim tb = frmControllerScreen.Controls.Find("txtResponseB", True)
    If tb.Count > 0 Then
        Dim txt As TextBox = tb.First
        txtResponseB = txt.Text
    End If

    Dim tc = frmControllerScreen.Controls.Find("txtResponseC", True)
    If tc.Count > 0 Then
        Dim txt As TextBox = ta.First
        txtResponseC = txt.Text
    End If

    Dim td = frmControllerScreen.Controls.Find("txtResponseD", True)
    If td.Count > 0 Then
        Dim txt As TextBox = ta.First
        txtResponseD = txt.Text
    End If

很明显,我将字符串分配给变量的A,B,C,D版本。目标是我可以继续调用其中一个值并将其分配给文本框/标签。

我试图使用以下代码:

    lblAutoChoice1.Text = ("txtResponse" & chrAvailableAnswers.Item(0).ToString.Trim)

但它并没有完全奏效。我尝试在其上使用.ToString方法,但我只是在运行时遇到System.ToString[]响应。

这在其他语言中很容易做到,例如PHP $Somevariable$correctAnswer,例如提取$SomevariableA但我还没有在VB中看到变量变量的示例。

如何在Visual Basic中创建变量变量(我相信是正确的名称)?

1 个答案:

答案 0 :(得分:0)

从Idle_Mind的答案中汲取线索: How to use a string like a variable in Visual Basic

lblAutoChoice1.Text = Me.GetType.GetField("txtResponse" & chrAvailableAnswers.Item(0).ToString, _ 
BindingFlags.Instance Or BindingFlags.NonPublic).GetValue(Me).ToString

这直接要求Imports System.Reflection用作顶线,高于表单Class的声明。