Как получить свойство IsChecked элемента управления WinForm? - PullRequest
1 голос
/ 05 апреля 2011

Не могу найти ответ на казалось бы легкий вопрос.Мне нужно перебрать элементы управления в форме, и если элемент управления является CheckBox и проверен, определенные действия должны быть выполнены.Примерно так

foreach (Control c in this.Controls)
        {
            if (c is CheckBox)
            {
                if (c.IsChecked == true)
                    // do something
            }
        }

Но я не могу получить свойство IsChecked.

Ошибка «System.Windows.Forms.Control» не содержит определения «IsChecked», и никакой метод расширения «IsChecked», принимающий первый аргумент типа «System.Windows.Forms.Control», не можетбыть найдены (отсутствует директива using или ссылка на сборку?)

Как я могу получить это свойство?Заранее большое спасибо!

РЕДАКТИРОВАТЬ

Хорошо, чтобы ответить на все - я пробовал кастинг, он не работает.

Ответы [ 5 ]

4 голосов
/ 05 апреля 2011

Ты рядом.Свойство, которое вы ищете, Проверено

foreach (Control c in this.Controls) {             
   if (c is CheckBox) {
      if (((CheckBox)c).Checked == true) 
         // do something             
      } 
} 
1 голос
/ 05 апреля 2011

Вам нужно привести его к флажку.

foreach (Control c in this.Controls)
        {
            if (c is CheckBox)
            {
                if ((c as CheckBox).IsChecked == true)
                    // do something
            }
        }
0 голосов
/ 05 апреля 2011

Класс Control не определяет свойство IsChecked, поэтому вам необходимо сначала привести его к соответствующему типу:

var checkbox = c as CheckBox;
if( checkbox != null )
{
    // 'c' is a CheckBox
    checkbox.IsChecked = ...;
}
0 голосов
/ 05 апреля 2011

Вам необходимо разыграть элемент управления:

    foreach (Control c in this.Controls)
    {
        if (c is CheckBox)
        {
            if (((CheckBox)c).IsChecked == true)
                // do something
        }
    }
0 голосов
/ 05 апреля 2011

Вы должны добавить приведение из Control в CheckBox:

foreach (Control c in this.Controls)
        {
            if (c is CheckBox)
            {
                if ((c as CheckBox).IsChecked == true)
                    // do something
            }
        }
...