我在这里遇到一个非常奇怪的问题。 我想要做的只是从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);
}
答案 0 :(得分:4)
我多年来一直在使用这种方法
我怀疑,你永远不能修改你用foreach
循环的集合。循环复制或使用for
。
(SelectedItems
是Items
的子集,如果您修改Items
,则修改SelectedItems
)