0
我正在通過字典進行枚舉並創建要添加到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的一個問題,我沒有循環。
這是我寫的答案。 OP沒有對s進行任何修改或測試.Value.Properties是這類異常的常見罪魁禍首。 – KeithS 2011-05-05 16:03:30
啊,就是這樣。我在listView2上有一個ItemCheck方法,它修改了我正在循環的集合。還沒有找到解決辦法,但至少我找到了罪魁禍首。謝謝! – 2011-05-05 16:17:01