收集被修改;枚举操作可能无法执行

时间:2011-05-05 15:56:07

标签: c# collections foreach

我通过字典枚举并创建要添加到ListView的项目。但是,特别是一行导致了这个错误:

收藏被修改;枚举操作可能无法执行。

foreach (KeyValuePair<string, bool> s in test.Value.Properties)
{
    ListViewItem item = new ListViewItem();
    item.Text = String.Format("{0}", s.Key);
    if (s.Value) { item.Checked = true; } // the problem line
    listView2.Items.Add(item);
}

我假设设置item.Text的原因是因为我没有修改原始值,因为它正在创建一个新字符串。如果我更改item.Checked = true以创建一个新的布尔值,它可以正常工作,但布尔值总是默认为false,这不是我想要的。

我该如何解决这个问题?

另外,我是不是应该尝试在foreach中修改任何集合的数据?我原本以为这个问题是因为我正在修改我正在循环的集合数据,但这似乎是ListViewItemCollection的一个问题,我没有循环遍历。

1 个答案:

答案 0 :(得分:7)

只有修改了您要枚举的集合时才会出现此错误 我在你的代码中看不到这样的东西,所以一定有其他一些问题 我只能猜测,但是,您可能会在向test.Value.Properties添加新项目时引发的事件中修改listView2吗?