我在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
但我认为必须有更好(更聪明)的方法来做到这一点。
我想以一种方式完成它,我在“组”框中获得了标签对象的总数,但我的努力没有成功。
答案 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