在单个方法上处理所有复选框事件



我发现了一些类似的问题,但没有一个C# Winforms。对于表格上的不同Checkboxes,我有许多类似的方法,但现在检查的数量即将翻倍,我正在寻找一种更简单的方法。

下面是一个示例:

private void CheckPET_Click(object sender, EventArgs e)
{
    if (CheckPET.Checked)
    {
        CheckAdicionarMaterial("PET");
    }
    else
    {
        if (Confirmacao())
            CheckRemoverMaterial("PET");
        else
            CheckPET.Checked = true;
    }
}

我为每个Checkbox都有一个,并且它们都遵循相同的模式,所以如果我能有一个处理所有点击的方法,我可以做这样的事情:

private void GenericCheckbox_Click(object sender, EventArgs e)
{
    if (Checkbox.Checked)
    {
        CheckAdicionarMaterial(Checkbox.Text);//The text of the boxes is always the string I want to pass here.
    }
    else
    {
        if (Confirmacao())
            CheckRemoverMaterial(Checkbox.Text);
        else
            Checkbox.Checked = true;
    }
}

我能做些什么来实现这一点?

如果我正确理解了这个问题 - 将单个函数绑定为多个复选框的事件处理程序?

private void checkBox_CheckedChanged(object sender, EventArgs e)
{
   CheckBox checkbox = sender as CheckBox;
   if (checkbox == null) return;
   if (checkbox.Checked)
   {
     CheckAdicionarMaterial(checkbox.Text);//The text of the boxes is always the string I want to pass here.
   }else
   {
     if (Confirmacao("Desmarcar removerá todas ocorrências do material. Continuar?"))
       CheckRemoverMaterial(checkbox.Text);
     else
         checkbox.Checked = true;
   }
}

最新更新