2013-12-02 1 views
1

Это сводит меня с ума! У меня есть TabControl, который содержит 5 вкладок. Каждая вкладка имеет ListView с несколькими флажками. Теперь я хотел бы передать мой TabControl методу и каждому элементу ListView - очистить все флажки.Прокрутите несколько элементов ListViews (в TabControl) и очистите флажки C#

Кажется не так сложно, но это было!

foreach (var myItem in tabControl1.Controls) { 
    if (myItem is ListView) { // surprisingly doesnt work... 
     // loop through ListView find CheckBox... 
    } 
} 

Что не так с оператором if?

Редактировать: Код работает! Хм ?!

foreach (ListViewItem listItem in listView1.Items) 
{ 
    listItem.Checked = false; 
} 

Решение: Я Искал «CheckBox», но это на самом деле ListViewItem со свойством Checked = истина/ложь.

Также см. Код ниже, хороший рекурсивный метод!

+0

Что внутри цикла (внутри 'if')? – ispiro

+0

Ничего до сих пор, просто Console.WriteLine ("trololo"); Wich не бежит. Кажется, что myItem является TabPage. Hmm –

ответ

2

Рекурсивный:

void ClearAllCheckBoxes(Control ctrl) 
{ 
    foreach (Control childControl in ctrl.Controls) 
     if (childControl is ListView) 
      foreach (ListViewItem item in ((ListView)childControl).Items) 
       item.Checked = false; 
     else ClearAllCheckBoxes(childControl); 
} 

И использование:

ClearAllCheckBoxes(tabControl1); 
+0

Хорошо, я попробую это .. –

+0

Wow, nice cast :) ОК тестирование, которое .. :) –

+0

Crashed, говорит listView is null. Может быть, я должен разместить его вне цикла? –