2016-12-14 9 views
0

パネルには35個のリストボックスがあります。これらの行でこれらのリストボックスにアクセスするためのforeachループを作成しています。インデックス値によるパネルのリストボックスへのアクセスC#

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

しかし、これらのリストボックスには、forループでインデックスをチェックしてアクセスしたいと考えています。

Like;

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コレクション内の特定のインデックスにあるコントロールはオペレーターとして使用して、リストボックスであるかどうかを確認できます。

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のインデックスがの場合は、のみが必要ですか?はいの場合は、Timの答えを使用します。

...または、については、ListBoxのインデックスが必要ですか?パネル内の他のコントロールはありますか?後者の場合は、次のようにしてください:

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