2016-12-14 102 views
0

我有一个包含35个列表框的面板。我正在做一个foreach循环,用这些行访问这些列表框;通过索引值访问面板中的列表框c#

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]; 
} 

我知道我写的代码是不正确的,但我想要达到带有索引值的列表框。

谢谢。

回答

1

您可以创建一个从列表框列表(或阵列):

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

谢谢Tim,它是我正在搜索的东西。 –

0

你可以检查是否在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 
    } 
} 
+0

非常感谢你mm8。 –

0

你是否需要ListBox的索引,相对于只有的ListBoxes本身?如果是的话,那就用蒂姆的回答。

...或者您是否需要列表框的索引相对于全部是面板中的其他控件?如果是后者,则可以这样做:

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