Повторяет элементы управления для флажков в C#

#c# #winforms

#c# #winforms

Вопрос:

Я хочу просмотреть все флажки в form.tab и пометить их как не установленные. Я обнаружил, что это было правильное решение:

      foreach (Control c in this.Controls)
     {
         CheckBox cb = c as CheckBox;
         if (cb! = null amp; amp; cb.Checked)
         {
            cb.Checked = false;
         }
     }
  

Но это не работает! И я не понимаю, почему. Я наблюдал за отладчиком и cb есть null . Почему это может быть? Где я ошибся?

Комментарии:

1. Может быть, ваши флажки не в форме, а в другом контейнере?

2. Нет:( Main_form.j1checkbox1…

Ответ №1:

Вероятно, флажки содержатся в каком-то контейнере, поэтому вам придется выполнить рекурсивный поиск или выполнить итерацию непосредственно по коллекции элементов этого контейнера.

Ответ №2:

 private void FindControls(Control Page)
{
     foreach (Control ctrl in this.Controls)
     {
          if (ctrl is CheckBox)
          {
              if (cb! = null amp; amp; cb.Checked)
              {                   
                   cb.Checked = false;                
              }
          }
          else 
          {
              if (ctrl.Controls.Count > 0)
              {
                   FindControls(ctrl);
              }
          }
     }
}
  

Ответ №3:

Попробуйте изменить первую строку из:

 this.Controls
  

Для

 this.tab.Controls
  

Ваш текущий код зацикливается на элементах управления непосредственно в форме. Вам нужно перебирать элементы управления на вкладке.

Ответ №4:

Я думаю, что элементы управления флажками не находятся в форме, возможно, они в другом контейнере, таком как групповое поле или панель