尝试将列表框中的列表框添加到循环列表中,而不是在我的代码中手动添加每个列表框。
想使用for循环并将其添加到我的列表中,如下所示。
listOfListBoxes.Add(listBox[i])
而不是...
listOfListBoxes.Add(listBox1);
listOfListBoxes.Add(listBox2);
listOfListBoxes.Add(listBox3);
listOfListBoxes.Add(listBox4);
listOfListBoxes.Add(listBox5);
listOfListBoxes.Add(listBox6);
答案 0 :(得分:2)
我想您的列表框是在Form(此)中定义的。因此,您只需使用此行从Controls集合中获取所有列表框,然后使用AddRange添加它们
listOfListBoxes.AddRange(this.Controls.OfType<ListBox>());
Controls集合包含在设计时定义并通过InitializeComponent调用创建的表单的所有控件。此集合可以循环使用,并检查是否每个元素都是带有类似代码的ListBox
foreach(Control c in this.Controls)
{
ListBox lb = c as ListBox;
if(lb != null)
listOfListBoxes.Add(lb);
}
但是在命名空间Linq中引入IEnumerable extensions可以避免上面的显式循环,而可以使用扩展名OfType在内部进行循环并产生所请求类型的每个元素。
最后,您可以将OfType返回的所有这些元素作为数组添加到List.AddRange方法