2015-11-11 280 views
-1

目前,我有下面的代码行:动态调用另一个变量名与另一个变量

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中创建变量变量(我相信是正确的名称)?

+0

评论从第一行来自代码的其他部分复制/粘贴。欣赏有用的姿态@HansPassant –

+0

@JamesThorpe:关于使用'Me.Controls.Find ...'我现在变得'System.Windows.Forms.Control []'当我使用'Me.Controls.Find (“txtResponse”&chrCorrectAnswer,True).ToString'句柄。我不知道变量在VB中作为控件处理。 –

+1

他们不是,我误解了你之后 - 你刚刚找到相同的控制... –

回答

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的声明之上。