【问题标题】:Referencing an object using a variable string in Visual Basic 2010在 Visual Basic 2010 中使用变量字符串引用对象
【发布时间】:2011-04-22 17:16:26
【问题描述】:

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

【问题讨论】:

  • 适用于 Windows。在 XP SP3 下开发。
  • 如果有人有类似的问题,我需要找出另外两个“更新”: - 使用 someVariable 作为控件 - 不仅为对象使用 set someVariable = elem Dim i As Integer: i = 2 Dim someVariable As Control Dim Name As String: Name = "label" & CStr(i) For Each elem In Me.Controls If (elem.Name = Name) Then Set someVariable = elem Exit For End If Next someVariable.Text = "What永远”

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


【解决方案1】:

这也有效:

    Dim lab As Label

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

【讨论】:

    【解决方案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
    

    【讨论】:

    • 嗨 B Pete,很抱歉没有早点回复 - 我被重新分配任务,还没有机会测试这个好的答案,但我很快就会回来!在此期间,有一个临时的勾号。感谢您抽出宝贵时间,我期待对其进行测试。
    • 如果您要将项目添加到集合中,为什么要乱用字符串键:只需创建一个集合来保存您关心的项目并迭代集合中的每个项目。
    猜你喜欢
    • 2017-12-23
    • 2012-05-22
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多