我通过字典枚举并创建要添加到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的一个问题,我没有循环遍历。
答案 0 :(得分:7)
只有修改了您要枚举的集合时才会出现此错误
我在你的代码中看不到这样的东西,所以一定有其他一些问题
我只能猜测,但是,您可能会在向test.Value.Properties
添加新项目时引发的事件中修改listView2
吗?