委托来替换重复的代码

本文关键字:代码 替换 | 更新日期: 2023-09-27 17:49:25

我在组框中有10个复选框。当"All"

为true时,顶部标有"All"的复选框会检查其他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;
    }

我讨厌重复同样的代码。我如何用一个事件方法创建一个委托来完成上面的任务?

委托来替换重复的代码

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

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

你也不需要比较布尔值与真/假-你可以直接在if语句中使用它们。

BTW你也应该验证的情况下,所有的CheckBoxes被选中,并设置ckAll.Checked = true在这种情况下

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