0

我在一个组框中有 10 个复选框。标记为“全部”的顶部复选框在选中“全部”时检查其他 9 个复选框

在其他 9 个复选框中,我的代码基本相同。以下是其中两个复选框的示例:

private void ckDal_Click(object sender, EventArgs e)
    {
        if (ckDal.Checked == false)
            ckAll.Checked = false;
    }

    private void ckHou_Click(object sender, EventArgs e)
    {
        if (ckHou.Checked == false)
            ckAll.Checked = false;
    }

我讨厌重复相同的代码。我将如何创建一个委托以仅使用一种事件方法来完成上述任务?

4

2 回答 2

2

Click您可以对所有 CheckBox使用单个事件处理程序。引发事件的实际 CheckBox 将从sender参数中获得。只需将其转换为 CheckBox 类型:

private void ck_Click(object sender, EventArgs e)
{
    if (!((CheckBox)sender).Checked)
        ckAll.Checked = false;
}

此外,您不需要将布尔值与 true/false 进行比较 - 您可以直接在if语句中使用它们。

顺便说一句,您还应该在检查所有 CheckBox 时验证大小写,并ckAll.Checked = true在这种情况下进行设置。

于 2012-12-25T14:31:01.537 回答
1
private void CheckBoxClick(object sender, EventArgs e)
{        
    if (!((CheckBox)sender).Checked)
        ckAll.Checked = false;
}
于 2012-12-25T14:31:10.580 回答