Как вы можете использовать подстановку переменных в Visual Basic для ссылки на имена объектов? - PullRequest
0 голосов
/ 09 мая 2018

Последние несколько месяцев я пишу bash-скрипты, но у меня есть приложение Visual Basic Window Forms, которое мне нужно написать и ударить в стену. Я думаю, что Баш погубил меня. Это, вероятно, очевидно очевидно, но я не могу понять это.

У меня есть несколько меток и переключателей, которые мне нужно перебрать и выполнить некоторые проверки, в то время как я могу сделать это для каждого из них, конечно, это действительно раздувает код, то есть 20 кнопок и 20 меток - это 40 дополнительных строк для каждой проверки. Таким образом, вопрос заключается в следующем: если у меня есть, например, radiobutton1, radiobutton2, radiobutton3 ... или label1, label2, label3 ... как я могу ссылаться на них с помощью подстановки переменных или как обойти это? Это будет полезно независимо от типа объекта из-за того, как VB называет вещи.

for i = 1 to 3
t=cstr(i)
  if radiobutton# $t %t (t) {t}.Checked= true then "-EXAMPLES"
    label# $t %t (t) {t}.Text ="You Clicked Me On"
  end if
next

Во всяком случае, я искал все утро, 4 часа, и, похоже, не могу найти решение. Мне нужно иметь возможность использовать свойства объектов и т. Д.

1 Ответ

0 голосов
/ 09 мая 2018
for i = 1 to 3
  Dim rb as Radiobutton = CType(Me.controls("RadioButton" & i.ToString), RadioButton)
  if rb.Checked = true then 
    Dim lab as Label = CType(Me.controls("Label" & i.ToString), Label)
    lab.Text ="You Clicked Me On"
  end if
next

... ну, надеюсь, я правильно понял вашу идею.

Вот способ обработки переключателей в разных контейнерах:

Dim RBlist as List(Of RadioButton)
RBlist.Add(Me.RadioButton1)
RBlist.Add(Me.RadioButton2)
RBlist.Add(Me.RadioButton3)

For Each rb in RBlist
    If rb.Checked = True Then
        ...
    End If
Next

В качестве альтернативы, если вам нужно выставить итерацию, вы можете написать последний бит так:

For ir = 0 to RBlist.Count - 1
    If RBlist(ir).Checked = True Then
        ...
    End If
Next

Обратите внимание, что при добавлении переключателей в список не имеет значения, в какой родительский контейнер они помещены. Лучшее время для добавления RadioButtons в список - это когда вы их создаете.

Если вам нужны разные объекты (такие как Labels, Buttons, NumericUpDowns, ...), вы должны создать список (объекта) для каждого из них в отдельности. Существуют и другие возможные структуры данных, но эта довольно простая и проверенная.

...