按索引值c#访问面板中的列表框

时间:2016-12-14 15:11:03

标签: c# .net listbox controls element

我有一个包含35个列表框的面板。我正在使用这些行来访问这些列表框的foreach循环;

foreach (ListBox empBox in panel4.Controls.OfType<ListBox>())
{
    //do something
}

但是我想通过for循环检查它们的索引来访问这些列表框。

像;

for (int i = 0; i<panel4.Controls.Count; i++)
{
    Listbox empBox = panel4.Controls[i];
}

我知道我写的代码不正确,但我希望使用索引值到达列表框。

感谢。

3 个答案:

答案 0 :(得分:1)

您可以从列表框中创建列表(或数组):

List<ListBox> listBoxList = panel4.Controls.OfType<ListBox>().ToList();
for (int i = 0; i < listBoxList.Count; i++)
{
    Listbox empBox = listBoxList[i];
}

答案 1 :(得分:0)

您可以使用as运算符检查Controls集合中特定索引处的控件是否为ListBox:

int index = 1;
ListBox lb = panel1.Controls[4] as ListBox;
if(lb != null)
{
    //there is a ListBox control at index 1
}



for (int i = 0; i < panel1.Controls.Count; i++)
{
    ListBox lb = panel1.Controls[4] as ListBox;
    if(lb != null)
    {
       //there is a ListBox at index i
    }
}

答案 2 :(得分:0)

对于列表盒本身,您是否需要ListBox的索引?如果是的话,请使用蒂姆的答案。

...或者您是否需要ListBox中的所有其他控件的索引?如果是后者,则执行以下操作:

foreach (ListBox empBox in panel4.Controls.OfType<ListBox>())
{
    int index = panel4.Controls.IndexOf(empBox);
    Console.WriteLine(index.ToString() + ": " + empBox.Name);
}