2016-12-14 100 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); 
}