通过索引值访问面板中的列表框 c#
Access to listbox in panel by index value c#
我有一个包含 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];
}
我知道我写的代码不正确,但我想到达具有索引值的列表框。
谢谢。
您可以从列表框创建列表(或数组):
List<ListBox> listBoxList = panel4.Controls.OfType<ListBox>().ToList();
for (int i = 0; i < listBoxList.Count; i++)
{
Listbox empBox = listBoxList[i];
}
您可以使用 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
}
}
相对于仅 列表框本身,您是否需要列表框的索引?如果是,则使用 Tim 的答案。
...或者您是否需要 ListBox 相对于 所有 面板中其他控件的索引?如果是后者,则执行以下操作:
foreach (ListBox empBox in panel4.Controls.OfType<ListBox>())
{
int index = panel4.Controls.IndexOf(empBox);
Console.WriteLine(index.ToString() + ": " + empBox.Name);
}
我有一个包含 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];
}
我知道我写的代码不正确,但我想到达具有索引值的列表框。
谢谢。
您可以从列表框创建列表(或数组):
List<ListBox> listBoxList = panel4.Controls.OfType<ListBox>().ToList();
for (int i = 0; i < listBoxList.Count; i++)
{
Listbox empBox = listBoxList[i];
}
您可以使用 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
}
}
相对于仅 列表框本身,您是否需要列表框的索引?如果是,则使用 Tim 的答案。
...或者您是否需要 ListBox 相对于 所有 面板中其他控件的索引?如果是后者,则执行以下操作:
foreach (ListBox empBox in panel4.Controls.OfType<ListBox>())
{
int index = panel4.Controls.IndexOf(empBox);
Console.WriteLine(index.ToString() + ": " + empBox.Name);
}