VB.NET 面板添加标签范围列表

问题描述 投票:0回答:1

在我的表单中,我有一个面板。 在一个循环中,我在此面板中创建了许多标签,但速度太慢了。

因此,看来在循环中创建标签列表并将它们添加到面板中应该更快。

这是我的代码:

Dim listLabels as new list(of label)
for a=0 to 100
 dim lbl as new label
 label.name="label" & a.Tostring
 listLabels.add(lbl)
next

myPanel.controls.addrange(listLabels)   

错误:“List(of Label)”类型的值无法转换为“Control()”

你能帮我吗?

谢谢

vb.net panel addrange
1个回答
0
投票

Control.Controls
返回一个
ControlCollection
,这不是
List<Control>
 接受 
AddRange
IEnumerable<Control>
,而是
AddRange
只接受
Control[]
:

myPanel.Controls.AddRange(listLabels.ToArray()) 

由于您已经知道大小并且需要一个数组,因此可以提高效率:

Dim labels(99) as Control  ' 100 labels
For a As Integer = 0 To 99
    Dim lbl As New Label
    lbl.Name = "label" & a.Tostring
    labels(a) = lbl
Next
Label1.Controls.AddRange(labels)
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.