如何在 Visual Basic 中使用变量替换来引用对象名称?

How can you use variable substitution in visual basic to referance object names?

过去几个月我一直在编写 bash 脚本,但是我有一个 Visual Basic Window 表单应用程序,我需要编写它并碰壁。我认为 bash 毁了我。这可能是显而易见的,但我似乎无法弄明白。

我有一些标签和单选按钮需要遍历并进行一些检查,而我可以对每个标签和单选按钮执行此操作当然它确实使代码膨胀,即 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 个小时了,似乎找不到解决方案。我确实需要能够使用对象的属性等。

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

注意,将单选按钮添加到列表时,将它们放置在哪个父容器中并不重要。将单选按钮添加到列表的最佳时间是在创建它们时。

如果您需要不同的对象(例如标签、按钮、NumericUpDowns 等),您必须分别为每个对象创建一个列表(对象)。还有其他可能的数据结构,但这个非常简单且经过验证。