【问题标题】:C# Foreach to change certain object properties?C# Foreach 更改某些对象属性?
【发布时间】:2012-05-07 12:21:58
【问题描述】:
我有一个带有复选框和标签的面板,我想在单击按钮时更改复选框的所有选中状态。
foreach (object x in panel1.Controls)
{
if (x.GetType() == typeof(CheckBox))
{
x.Checked = false; // problem is here;
// (CheckBox)x.Checked = false; // also didn't work
}
}
我确定这很简单,但找不到解决问题的方法。我能够在 vb.net 中编写相同的程序,但不想使用它
【问题讨论】:
标签:
c#
object
properties
foreach
controls
【解决方案1】:
foreach(Checkbox box in panel1.Controls.OfType<CheckBox>())
{
box.Checked = true;
}
【解决方案2】:
您绝对可以稍微清理一下您的代码(以及用括号解决问题):
foreach(var x in panel1.Controls)
{
var checkbox = x as Checkbox;
if(checkbox != null) checkbox.Checked = false;
}
【解决方案3】:
试试
((CheckBox)x).Checked = false;
如你所写,编译器理解
(CheckBox)(x.Checked) = false;
【解决方案4】:
x 仍然是一个对象,因此您需要将对象强制转换为复选框
((Checkbox)x).Checked = false;
【解决方案5】:
您需要在整个转换操作周围加上括号:
((CheckBox)x).Checked = false;