0

我得到了这个表单,在 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

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

我想以一种获得“组”框中的标签对象总数的方式做到这一点,但我的努力没有成功。

4

2 回答 2

2

这很简单,不需要数组:

For Each lbl As Label In MyGroupBox.Controls.OfType(Of Label)()
    ' ... do something with "lbl"
Next lbl
于 2013-11-08T19:10:49.310 回答
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
于 2013-11-07T15:47:39.240 回答