C# 如何在Winform中选择和取消选择复选框?

C# 如何在Winform中选择和取消选择复选框?,c#,winforms,checkbox,C#,Winforms,Checkbox,我的代码只做如果chckAll.Checked比使所有复选框选中。。。我想要实现的是,当任何复选框未选中时,在选中所有复选框后,使chckAll未选中。。。。此外,如果一个接一个地选中所有复选框,则会使chckAll处于选中状态…我如何才能做到这一点 private void chckAll_CheckedChanged(object sender, EventArgs e) { if (chckAll.Checked) {

我的代码只做如果chckAll.Checked比使所有复选框选中。。。我想要实现的是,当任何复选框未选中时,在选中所有复选框后,使chckAll未选中。。。。此外,如果一个接一个地选中所有复选框,则会使chckAll处于选中状态…我如何才能做到这一点

private void chckAll_CheckedChanged(object sender, EventArgs e)
        {
            if (chckAll.Checked)
            {
                foreach (Control ctrl in checkBoxesPanel3.Controls)
                {
                    CheckBox chkboxes = ctrl as CheckBox;
                    if (chkboxes != null)
                    {
                        chkboxes.Checked = true;

                    }

                }

            }           

        }

将以下事件添加到除chckAll之外的所有其他复选框

private void checkBox_CheckedChanged(object sender, EventArgs e)
{
    CheckFlg = true;
    if (!CheckAllFlg)
    {
        chckAll.Checked = checkBoxesPanel3.Controls.OfType<CheckBox>().Where(x => x.Name != "chckAll").All(c => c.Checked);  
    }
    CheckFlg = false;
}

private void chckAll_CheckedChanged(object sender, EventArgs e)
{
    CheckAllFlg = true;

    if (!CheckFlg)
    {
        foreach (CheckBox ctrl in checkBoxesPanel3.Controls.OfType<CheckBox>().Where(x => x.Name != "chckAll"))
        {
            ctrl.Checked = chckAll.Checked;
        }
    }
    CheckAllFlg = false;
}

将以下事件添加到除chckAll之外的所有其他复选框

private void checkBox_CheckedChanged(object sender, EventArgs e)
{
    CheckFlg = true;
    if (!CheckAllFlg)
    {
        chckAll.Checked = checkBoxesPanel3.Controls.OfType<CheckBox>().Where(x => x.Name != "chckAll").All(c => c.Checked);  
    }
    CheckFlg = false;
}

private void chckAll_CheckedChanged(object sender, EventArgs e)
{
    CheckAllFlg = true;

    if (!CheckFlg)
    {
        foreach (CheckBox ctrl in checkBoxesPanel3.Controls.OfType<CheckBox>().Where(x => x.Name != "chckAll"))
        {
            ctrl.Checked = chckAll.Checked;
        }
    }
    CheckAllFlg = false;
}

此外,如果一个接一个地选中所有复选框,则会使chckAll处于选中状态…我如何才能做到这一点?例如,我有5个复选框和一个chckAll复选框。。。。如果您的代码中有任何复选框未选中,则会使chckAll复选框未选中…但是如果我逐个选中所有五个复选框,会怎么样?当我完成除chckAll之外的检查时,我也想自动选择chckAll框…您的
chckAll
复选框是否也在
checkBoxesPanel3
中?是的,它也在我的checkBoxesPanel3Ok中,作为我的更新代码,您可以按照您指定的方式指定
chckAll
复选框的名称,如果逐个选择所有复选框,然后选择chckAll,则该复选框也会起作用……我如何才能做到这一点?例如,我有5个复选框和一个chckAll复选框。。。。如果您的代码中有任何复选框未选中,则会使chckAll复选框未选中…但是如果我逐个选中所有五个复选框,会怎么样?当我完成除chckAll之外的检查时,我也要自动选择chckAll框…您的
chckAll
复选框是否也在
checkBoxesPanel3
中?是的,它也在我的checkBoxesPanel3中。那么,作为我的更新代码,您可以按照您给定的方式给出
chckAll
复选框的名称,它会起作用