如何在循环中将listBoxes添加到listBoxes列表?

时间:2019-07-18 20:58:51

标签: c# .net

尝试将列表框中的列表框添加到循环列表中,而不是在我的代码中手动添加每个列表框。

想使用for循环并将其添加到我的列表中,如下所示。

listOfListBoxes.Add(listBox[i])

而不是...

listOfListBoxes.Add(listBox1);
listOfListBoxes.Add(listBox2);
listOfListBoxes.Add(listBox3);
listOfListBoxes.Add(listBox4);
listOfListBoxes.Add(listBox5);
listOfListBoxes.Add(listBox6);

1 个答案:

答案 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方法