[英]C#: How do I iterate through two listBoxes individually?
我正在尝试通过两个listBoxes迭代我正在编写的程序。 这两个列表框内部都有不同的项目计数。
基本上,我希望我的程序从一个listBox中获取selectedItem,并使用该项目中的字符串或文本替换另一个listBox中每个和每个项目中的文本。
使用原始listBox中的selectedItem对另一个listBox中的所有项目完成操作后,我希望它转到原始listBox中的下一个项目,然后再次执行相同的过程。
它应该重复此操作,直到它遍历了原始listBox中的所有项目。
希望这是有道理的。
这是我编写的一些示例代码。 我创建了两个for循环,以便可以遍历两个listBoxes。
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”中的每个项目为止。
任何帮助,将不胜感激!
我认为问题是由于List上的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。 这意味着,如果我们查看内部循环的最后一次迭代,则该索引的值已经设置得很高。 这可能是应用程序引发异常的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.