2015-09-11 5 views
1

Я пытаюсь установить программно проверенный элемент в контрольном списке в соответствии с некоторыми критериями. Это код:Программно установить отмеченный элемент в CheckListBox

int chItm = 0; 

foreach (DataRowView row in chLBDatumi.Items) 
    {     
     if (row["DatumGO"].ToString().Equals(myListItems[chItm].ToString())) 
     { 
       chLBDatumi.SetItemChecked(chItm, true); 
     } 
     chItm++;     
    } 

Но это бросает исключение:

Список что переписчик привязанный к был изменен. Перечислитель может использоваться только в том случае, если список не изменяется.

Есть ли другой способ для этого?

ответ

4

Используйте for петлю вместо foreach:

for (int i = 0; i < chLBDatumi.Items.Count(); i++) 
{     
    if (chLBDatumi.Items[i]["DatumGO"].ToString().Equals(myListItems[chItm].ToString())) 
    { 
     chLBDatumi.SetItemChecked(chItm, true); 
    } 
    chItm++;     
} 
+0

Существует ошибка "Невозможно применить индексирование с [] к выражению типа" объект" на chLBDatumi.Items [я] [ "DatumGO"]. ToString() – Josef

+1

Проверьте, работает ли это: 'chLBDatumi.Items.Cast () .ElementAt (i) [" DatumGO "]' –

+0

Спасибо, это работает отлично! – Josef