2015-11-11 242 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的聲明之上。