如何取消选中我所有面板中的所有复选框

时间:2016-07-19 23:30:33

标签: c#

我试图取消选中我所有面板中的所有复选框。 这与其他问题不同,因为每个面板都有一个复选框。 我现在的代码现在取消选中表单中的所有复选框,但不取消所有面板中的复选框。

foreach (CheckBox control in this.Controls.OfType<CheckBox>())
{
    control.Checked = false;
}

我有一堆面板和复选框,必须有一个简单的方法来取消选中它们。

这对我表单中的每个复选框都有效,而不仅仅是面板 我的代码:

private void button16_Click(object sender, EventArgs e)
{
    clearStuff((Control.ControlCollection)this.Controls);
}
private void clearStuff(Control.ControlCollection obj)
{
    foreach (Control control in obj)
    {
        if (control.HasChildren)
            clearStuff(control.Controls);
        else
            if (control is CheckBox)
            {
                CheckBox check_box = (CheckBox)control;
                check_box.Checked = false;
           }
    }
}

这可行,但可以重构

foreach (Panel control2 in this.Controls.OfType<Panel>())
{
    foreach (CheckBox control1 in control2.Controls.OfType<CheckBox>())
    {
        control1.Checked = false;
    }
}

1 个答案:

答案 0 :(得分:0)

private void button16_Click(object sender, EventArgs e)
{
    clearStuff((Control.ControlCollection)this.Controls);
}

public void clearStuff(Control.ControlCollection controls)
{
    foreach (Control c in controls)
    {
        if (c is Panel)
        {
            clearStuff(c);
        }
        else if (c is Checkbox)
        {
            c.Checked = false;
        }
    }
}