VB.NET中Panel调用AddRange添加Label列表报错,求解决方法
问题解决:List(Of Label)无法转换为Control()的错误
错误原因
Panel.Controls.AddRange()方法要求传入**Control()类型的数组**,但你传入的是List(Of Label)集合,类型不匹配导致报错。
修复方案
方案1:将List转换为数组(推荐)
调用List的ToArray()方法,把List(Of Label)转换为可兼容的数组(Label继承自Control,可直接传入):
Dim listLabels As New List(Of Label) For a = 0 To 100 Dim lbl As New Label lbl.Name = "label" & a.ToString() ' 注意:原代码变量名写错,应为lbl而非label listLabels.Add(lbl) Next myPanel.Controls.AddRange(listLabels.ToArray()) ' 转换为数组后传入
方案2:直接创建数组
如果不需要List中转,可直接声明Control数组存储Label:
Dim labelsArray(100) As Control For a = 0 To 100 Dim lbl As New Label lbl.Name = "label" & a.ToString() labelsArray(a) = lbl Next myPanel.Controls.AddRange(labelsArray)
额外修正
原代码存在笔误:label.name应为lbl.name,不修正会触发编译错误,需同步修改。
内容的提问来源于stack exchange,提问作者Jimmy Dubray
相关产品推荐
相关产品推荐

