如何获得一个WinForm控件的IsChecked属性

本文关键字:控件 WinForm IsChecked 属性 一个 何获得 | 更新日期: 2023-09-27 17:49:15

看似简单的问题,却找不到答案。我需要遍历表单上的控件,如果控件是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指令或程序集引用?)

如何访问这个属性?提前感谢!

编辑

好吧,回答所有问题-我试过cast,它不起作用

如何获得一个WinForm控件的IsChecked属性

你很接近了。您要查找的属性是Checked

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

您需要将其强制转换为复选框。

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

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

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

您需要强制转换控件:

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

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

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