2011-11-24 186 views
0

我有一個for循環,爲列表框中的每個項目它將執行一個子。 For循環根本沒有迭代,這有什麼奇怪的。我不得不強制它迭代到第一個項目,但如果完成後執行該項目的所有潛艇,它就停止。C#:For循環不迭代

如何讓它爲列表框中的每個項目保持迭代?

繼承人我的代碼:

listBox7.SelectedIndex = 0; 

for (int i = 0; i < listBox7.Items.Count; i++) 
{ 
    sub1(); 
    sub2(); 

    listBox1.Items.Add(listBox7.SelectedItem.ToString() + "\r"); 

    while (listBox7.SelectedItems.Count > 0) 
    { 
     listBox7.Items.Remove(listBox7.SelectedItems[0]); 
    } 

    webBrowser1.Navigate("http://www.google.com"); 
} 
+9

你確定'listBox7.Items.Count'是否大於0? – DarthVader

+0

你的循環應該做什麼?它從不使用'i',只使用'SelectedItem' - 這些都非常不同。你使用'SelectedIndex' /'SelectedItem'迭代'listBox7'嗎?不要這樣做。 – Ryan

+2

也,重命名你的列表框以使其具有有意義的名字 –

回答

4

你最有可能消除所有的項目在內,同時聲明,沒有留下在第二次迭代上。

如果您listBox1中包含超過1項,例外總是會在下面的行拋出:

listBox1.Items.Add(listBox7.SelectedItem.ToString() + "\r"); 

,因爲不再是一個選擇的項目。

這就是爲什麼異常處理,即使你只是在測試某些東西,也是至關重要的。

如果你的目標是處理在listBox7每一個項目,那麼你可以通過移動下面的行做到這一點:

listBox7.SelectedIndex = 0; 

裏面的for循環中,線以上

sub1(); 
+0

在listbox7中選擇所有項目時就是這種情況。如果沒有循環仍然會執行的課程,但什麼都不會做... – Ajai

+0

@Ajai:確實;這就是爲什麼我以「最有可能」的方式限制聲明的原因。但是這種情況符合OP報告的問題。 –

+0

Hhmmm是啊.. OP必須回答這個... – Ajai