在Visual Basic 2010中使用变量字符串引用对象

时间:2010-10-08 05:14:43

标签: vb.net visual-studio visual-studio-2010

我在Windows上的 Visual Basic 2010 中的表单上有几组类似的对象(标签,进度条)。在我的代码中,我有包含数据的集合,需要将其推送到每个集合的value / text属性中。

我想得到类似于PHP的解决方案,因为我可以像以下一样分配值:

For ID as Integer from 0 to count(collectionExample) lblExample{ID}.Text=collectionExample(variableID)

...并且因此循环,以便将每个不同的lblExample更新为其对应的值。

我遇到的问题是我似乎无法使用变量引用表单上的对象。我也尝试过像

这样的东西

CallByName("lblExample" + variableID, "Text", CallType.Set, exampleCollection(variableID)) ...但是我仍然无法将字符串和变量组合起来引用该对象。

通过组合字符串前缀和变量字符串标识符来引用VB2010中的对象的任何解决方案,类似于PHP的$ variable {$ variable}方法?

编辑:Windows平台

2 个答案:

答案 0 :(得分:4)

这也有效:

    Dim lab As Label

    For i As Integer = 1 To 2
            lab = Me.Controls("label" & i)
            lab.Text = "Test" & i
    Next

答案 1 :(得分:2)

您可以使用字符串作为键将每个控件添加到字典中。

然后您可以使用字符串访问控件。

这是一个简单的例子,用你的foreach循环替换for循环......

可能有一种更简洁的方法将数据与控件相关联,例如将控件放在由整数索引的集合中(在示例中为ID),但是您要求输入字符串!

Public Class Form1

Dim ctrlDict As New Dictionary(Of String, Control)

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    ctrlDict.Add("label1", Label1)
    ctrlDict.Add("label2", Label2)

    For i As Integer = 1 To 2
        ctrlDict("label" & i).Text = "Test" & i
    Next
End Sub

End Class