无法找到一个看似简单的问题的答案。我需要遍历表单上的控件,如果一个控件是一个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'的第一个参数可以找到(你错过了使用指令或程序集引用吗?)
我怎样才能到达这家酒店?非常感谢提前!
修改
好的,要回答所有问题 - 我尝试过投射,但它不起作用。
答案 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 = ...;
}