2011-05-05 2 views
0

사전을 통해 열거하고 ListView에 추가 할 항목을 만듭니다. 그러나 한 줄의 오류가 특히 발생합니다.컬렉션이 수정되었습니다. 열거 연산이 실행되지 않을 수 있습니다.

컬렉션이 수정되었습니다. 열거 연산이 실행되지 않을 수 있습니다. 이 새로운 문자열을 생성 이후 나는 원래 값을 수정 아니에요 때문에 item.Text가 작동이 설정 이유

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.Checked = true로 변경하면 제대로 작동하지만 부울은 항상 내가 원하는 바가 아닌 false로 기본값이 설정됩니다.

이 문제를 해결하려면 어떻게해야합니까?

또한 컬렉션 데이터를 foreach로 수정하려고하면 안됩니까? 나는 처음부터 루프를 돌고있는 컬렉션의 데이터를 수정하고 있었기 때문에 문제가 있다고 생각했다. 그러나이 작업은 ListViewItemCollection에서 문제가되는 것으로 보인다.

답변

7

이 오류는 열거 할 컬렉션을 수정하는 경우에만 발생합니다.
코드에서 그와 같은 것을 볼 수 없으므로 다른 문제가 있어야합니다.
listView2에 새 항목을 추가 할 때 발생하는 이벤트에서 나는 단지 추측 할 수 있지만 어쩌면 test.Value.Properties을 수정합니까?

+1

이것은 내가 작성한 답변입니다. OP는 s 또는 test.Value.Properties를 변경하지 않습니다. 이는이 유형의 예외에 대한 일반적인 원인입니다. – KeithS

+0

아, 그게 다예요. 내가 루프를 통해 컬렉션을 수정 listView2에 대한 ItemCheck 메서드를했다. 해결책을 찾지 못했지만 적어도 범인을 찾았습니다. 고맙습니다! –

관련 문제