委托给替换重复码(Delegate to replace repeating code)

2019-10-30 02:17发布

我有一组框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;
    }

我讨厌重复相同的代码。 我将如何创建一个委托完成上述只用一个事件的方法?

Answer 1:

您可以使用单一的Click事件处理程序的所有复选框。 实际复选框,这引发该事件,将可从sender参数。 只需将它转换为复选框类型:

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

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

顺便说一句 ,你还应该验证的情况下,当所有的CheckBox进行了检查,并设置ckAll.Checked = true在这种情况下。



Answer 2:

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


文章来源: Delegate to replace repeating code