我在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平台
答案 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