如何获取WinForm控件的IsChecked属性?

时间:2011-04-05 06:59:34

标签: c# winforms controls ischecked

无法找到一个看似简单的问题的答案。我需要遍历表单上的控件,如果一个控件是一个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'的第一个参数可以找到(你错过了使用指令或程序集引用吗?)

我怎样才能到达这家酒店?非常感谢提前!

修改

好的,要回答所有问题 - 我尝试过投射,但它不起作用。

5 个答案:

答案 0 :(得分:4)

你很亲密。您要查找的属性是Checked

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

答案 1 :(得分:1)

您需要将其投射到复选框。

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

答案 2 :(得分:0)

你必须从Control添加一个强制转换为CheckBox:

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

答案 3 :(得分:0)

你需要施放控件:

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

答案 4 :(得分:0)

Control类没有定义IsChecked属性,因此您需要先将其强制转换为适当的类型:

var checkbox = c as CheckBox;
if( checkbox != null )
{
    // 'c' is a CheckBox
    checkbox.IsChecked = ...;
}