WPF:从列表框中删除项目

时间:2012-06-23 16:39:28

标签: c# wpf listbox

  

可能重复:
  WPF ListBox: Item Removal

我在这里遇到一个非常奇怪的问题。 我想要做的只是从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);
        }

1 个答案:

答案 0 :(得分:4)

  

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

我怀疑,你永远不能修改你用foreach循环的集合。循环复制或使用for

SelectedItemsItems的子集,如果您修改Items,则修改SelectedItems

相关问题