2

找不到一个看似简单的问题的答案。我需要遍历窗体上的控件,如果控件是 CheckBox,并且被选中,则应该执行某些操作。像这样的东西

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

但我无法到达 IsChecked 属性。

错误是“System.Windows.Forms.Control”不包含“IsChecked”的定义,并且找不到接受“System.Windows.Forms.Control”类型的第一个参数的扩展方法“IsChecked”(您是否缺少using 指令或程序集引用?)

我怎样才能到达这个属性?提前非常感谢!

编辑

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

4

5 回答 5

5

你很近。您要找的物业是Checked

foreach (Control c in this.Controls) {             
   if (c is CheckBox) {
      if (((CheckBox)c).Checked == true) 
         // do something             
      } 
} 
于 2011-04-05T07:04:45.987 回答
2

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

foreach (Control c in this.Controls)
        {
            if (c is CheckBox)
            {
                if ((c as CheckBox).IsChecked == true)
                    // do something
            }
        }
于 2011-04-05T07:01:42.083 回答
1

您必须从 Control 向 CheckBox 添加强制转换:

foreach (Control c in this.Controls)
        {
            if (c is CheckBox)
            {
                if ((c as CheckBox).IsChecked == true)
                    // do something
            }
        }
于 2011-04-05T07:02:15.000 回答
1

您需要转换控件:

    foreach (Control c in this.Controls)
    {
        if (c is CheckBox)
        {
            if (((CheckBox)c).IsChecked == true)
                // do something
        }
    }
于 2011-04-05T07:02:56.873 回答
1

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

var checkbox = c as CheckBox;
if( checkbox != null )
{
    // 'c' is a CheckBox
    checkbox.IsChecked = ...;
}
于 2011-04-05T07:07:27.470 回答