我有一个包含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];
}
我知道我写的代码不正确,但我希望使用索引值到达列表框。
感谢。
答案 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);
}