在Visual Basic中使用for访问几个控件

时间:2013-11-07 15:33:35

标签: vb.net visual-studio-2010

我在GroupBox中有几个标签,这个标签都有相同的名称和一个数字(类似于默认的Label1,Label2,LabelN)

我正在使用sub()更改此标签的外观和内容,但我无法弄清楚如何在不写完整名称的情况下引用每个标签,可以执行以下操作:

To All Labels inside Group Box 
Sub(LabelN)

目前我正在创建一个标签数组,并在表单加载时指定名称,如:

 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        LabelMatrix(0) = Label1
        LabelMatrix(1) = Label2
        LabelMatrix(2) = Label3
        LabelMatrix(3) = Label4
....
    End Sub

但我认为必须有更好(更聪明)的方法来做到这一点。

我想以一种方式完成它,我在“组”框中获得了标签对象的总数,但我的努力没有成功。

2 个答案:

答案 0 :(得分:2)

这很简单,不需要数组:

For Each lbl As Label In MyGroupBox.Controls.OfType(Of Label)()
    ' ... do something with "lbl"
Next lbl

答案 1 :(得分:1)

您可以使用循环来构建控件名称,使用Controls.Find()来获取对所需控件的引用。类似的东西:

    Dim lbl As Label
    Dim matches() As Control
    For i As Integer = 1 To 10
        matches = Me.Controls.Find("Label" & i, True)
        If matches.Length > 0 AndAlso TypeOf matches(0) Is Label Then
            lbl = DirectCast(matches(0), Label)
            ' ... do something with "lbl" ...
        End If
    Next