C#:For循环不迭代

时间:2011-11-24 02:44:49

标签: c# for-loop iteration loops

我有一个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");
}

1 个答案:

答案 0 :(得分:4)

您最有可能删除内部while语句中的所有项目,在第二次传递中不会进行任何迭代。

如果您的listBox1包含多个项目,则会在以下行中抛出异常:

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

因为不再有选定的项目。

这就是为什么异常处理,即使你只是测试一些东西,也是至关重要的。

如果您的目标是处理listBox7中的每个项目,那么您可以通过移动以下行来完成此任务:

listBox7.SelectedIndex = 0;

在for循环内,在行

之上
sub1();