2015-11-11 2 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 формы.

Смежные вопросы