2015-05-14 4 views
4

Я работал над методом, а затем понял, что у меня есть цикл foreach, который пробегал все проверочные элементы, а не пробегал все непроверенные элементы.Как сделать цикл для всех непроверенных элементов из checklistbox C#?

foreach (object itemChecked in checkedListBox1.CheckedItems) 
{(...)} 

Мне было интересно, есть ли способ сделать это, не меняя код слишком много. С уважением

ответ

8

два варианта:

  1. перебрать все Items и проверить их против CheckedItems.
  2. Используйте LINQ.

Вариант 1

foreach (object item in checkedListBox1.Items) 
{ 
    if (!checkedListBox1.CheckedItems.Contains(item)) 
    { 
    // your code 
    } 
} 

Вариант 2

IEnumerable<object> notChecked = (from object item in checkedListBox1.Items 
            where !checkedListBox1.CheckedItems.Contains(item) 
            select item); 

foreach (object item in notChecked) 
{ 
    // your code 
} 
1

Литые элементы как CheckBox перечислимой, то вы можете цикл:

foreach (CheckBox cb in checkedListBox1.Items.Cast<CheckBox>()) 
{ 
    if (!cb.Checked) 
    { 
     // your logic 
    } 
}