C#:我如何单独遍历两个listBox?

时间:2016-05-28 05:09:47

标签: c# for-loop listbox

我正在尝试为我正在编码的程序迭代两个listBox。两个listBox都有不同的项目计数。

基本上,我希望我的程序从一个listBox中获取selectedItem,并使用该项中的字符串或文本替换另一个listBox中的EACH和EVERY单项的文本。

一旦使用原始listBox中的selectedItem完成另一个listBox中的所有项目,我希望它转到原始listBox中的下一个项目并重新执行相同的过程。

它应该重复这个UNTIL它已经遍历了原始listBox中的所有项目。

希望这是有道理的......

这是我制作的一些示例代码。我创建了两个for循环,以便它可以遍历两个listBox。

for (int i = 0; i < listBoxOriginal.Items.Count; i++)
{
    string linkurl = listBoxOriginal.Items[i].ToString() + "..";
    listBoxNewListBox.SelectedIndex = 0;

    for (int o = 0; o < listBoxNewListBox.Items.Count; o++)
    {
        string s = listBoxNewListBox.Items[o] as string;
        string newurl = s.Replace("DOMAIN", linkurl);
        listBoxNewListBox.SelectedIndex++;
    }
}

我的问题是,当内部for循环完成迭代时,它会出错。我知道错误是因为它到达了listBox的末尾并且无法继续,但我不知道如何在没有选择项目的情况下迭代listBox。

它应该做的是,一旦它到达“listBoxNewListBox”的末尾,它应该转到“listBoxOriginal”中的下一个项目,并再次执行相同的过程,直到它完成“listBoxOriginal”中的每个项目。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

我认为问题是因为列表中的SelectedIndex。我认为它会走得很远。

这是一个小修改:

for (int i = 0; i < listBoxOriginal.Items.Count; i++)
{
    string linkurl = listBoxOriginal.Items[i].ToString() + "..";

    for (int o = 0; o < listBoxNewListBox.Items.Count; o++)
    {
        string s = listBoxNewListBox.Items[o] as string;
        string newurl = s.Replace("DOMAIN", linkurl);
        listBoxNewListBox.SelectedIndex = o;
    }
}

以下是解释:

在内循环中,您正在执行此操作:listBoxNewListBox.SelectedIndex++您将此索引设置为比循环索引多1。这意味着,如果我们查看内部循环的最后一次迭代,则使用已经为高的值设置此索引。这可能是应用程序抛出异常的原因。