2011-11-24 153 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