我正在尝试为我正在编码的程序迭代两个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”中的每个项目。
任何帮助将不胜感激!
答案 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。这意味着,如果我们查看内部循环的最后一次迭代,则使用已经为高的值设置此索引。这可能是应用程序抛出异常的原因。