为什么是我的“foreach”?c#代码不会循环遍历listBox中的所有项

本文关键字:listBox 遍历 循环 我的 foreach 代码 为什么 | 更新日期: 2023-09-27 18:14:24

期望是什么:工具在每个项目上执行任务,在列表框中一个接一个。

发生了什么:工具只对列表框中用户选择的项执行任务。没有别的了。

代码:

 int index;
        string item;
        foreach (int i in listBox1.SelectedIndices)
        {
            index = listBox1.SelectedIndex;
            item = listBox1.Items[index].ToString();
            texteditor.Documents.Open(@item);
        }

为什么是我的“foreach”?c#代码不会循环遍历listBox中的所有项

这应该遍历所有项

foreach (var item in listBox1.Items)
{
    texteditor.Documents.Open(item.ToString());
}

您正在对选定的项进行迭代,而您希望对列表框中的所有项进行迭代。

同样,迭代ListBox的正确方法是返回ListItem而不是int。

试试这个:

 string item;
 foreach (ListItem li in listBox1.Items)
 {
     item = li.ToString();
     texteditor.Documents.Open(@item);
 }

我还从你的代码中删除了索引变量。如果您需要其他内容的索引,则需要像这样的for循环:

 string item;
 for (int index = 0; index < listBox1.Items.Count; index++) {
     item = listBox1.Items[index].ToString();
     texteditor.Documents.Open(@item);
     // do something with index
 }