-3

可能重复:
WPF 列表框:删除项目

我在这里面临一个非常奇怪的问题。我想要做的只是从 WPF 的列表框中删除项目,所以这里是代码:

    private void button9_Click(object sender, RoutedEventArgs e)
    {
        if (listBox7.SelectedItems.Count > 0)
        {
            foreach (string item in listBox7.SelectedItems)
            {
                listBox7.Items.Remove(item);
            }
        }
    }

这根本不起作用,我总是收到错误消息 [在 foreach 循环中]:

Collection was modified; enumeration operation may not execute.

这真的很烦人,因为我多年来一直在使用这种方法。顺便说一句,我对 WPF 很陌生,但我对 C# 有丰富的经验,所以这对我来说应该没问题。

编辑:嗯,当我输入“使用它多年”时,我发现我在谈论别的东西

无论如何,这里是修复:

        List<string> removals = new List<string>();

        foreach (string item in listBox7.SelectedItems)
        {
            removals.Add(item);
        }

        foreach (string s in removals)
        {
            listBox7.Items.Remove(s);
        }
4

1 回答 1

4

我多年来一直在使用这种方法

我怀疑,你永远不能修改你循环的集合foreach。循环遍历副本或使用for.

SelectedItems是一个子集Items,如果你修改Items你修改SelectedItems

于 2012-06-23T16:42:05.157 回答