我有一个for循环,对于列表框中的每个项目,它将执行一个sub。奇怪的是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");
}
答案 0 :(得分:4)
您最有可能删除内部while语句中的所有项目,在第二次传递中不会进行任何迭代。
如果您的listBox1包含多个项目,则会在以下行中抛出异常:
listBox1.Items.Add(listBox7.SelectedItem.ToString() + "\r");
因为不再有选定的项目。
这就是为什么异常处理,即使你只是测试一些东西,也是至关重要的。
如果您的目标是处理listBox7中的每个项目,那么您可以通过移动以下行来完成此任务:
listBox7.SelectedIndex = 0;
在for循环内,在行
之上sub1();