在我的表单中,我有一个面板。 在一个循环中,我在此面板中创建了许多标签,但速度太慢了。
因此,看来在循环中创建标签列表并将它们添加到面板中应该更快。
这是我的代码:
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()”
你能帮我吗?
谢谢
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)