C#Foreach改变某些对象属性?

fif*_*c04 3 c# foreach controls properties object

我有一个带复选框和标签的面板,我想在单击按钮时更改复选框的所有选中状态.

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
            }
        }
Run Code Online (Sandbox Code Playgroud)

我确信它很简单但无法找到解决问题的方法.我能够在vb.net中编写相同的程序,但不想使用它

mel*_*okb 7

您需要在整个转换操作周围加上括号:

((CheckBox)x).Checked = false;
Run Code Online (Sandbox Code Playgroud)


Jus*_*ner 6

您肯定可以稍微清理一下代码(以及用括号解决问题):

foreach(var x in panel1.Controls)
{
    var checkbox = x as Checkbox;
    if(checkbox != null) checkbox.Checked = false;
}
Run Code Online (Sandbox Code Playgroud)