Я перечисляю в Словаре и создаю элемент, который будет добавлен в 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, которую я не прохожу.