繁体   English   中英

C#:如何分别遍历两个listBox?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM