"checked = false"的CheckBox(事件)方法

Ent*_*tic 3 .net c# winforms

是否有任何方法或是否可以在取消选中(Windows窗体)复选框时(但不检查时)编写执行一组指令的方法?我将澄清这提供我的示例代码.

现有样本代码:

private void ChkBox_CheckedChanged(object sender, EventArgs e)
{
    if (ChkBox.Checked == false)
        {
                MessageBox.Show("unchecked");
        }
}
Run Code Online (Sandbox Code Playgroud)

问:可以if condition通过编写一个只在取消选中复选框时执行的方法来避免这种情况.

插图:这样的 事情:

private void ChkBox_Unchecked(object sender, EventArgs e)
{
    MessageBox.Show("unchecked");
}
Run Code Online (Sandbox Code Playgroud)

附加评论:我没有任何事情要执行'复选框被检查'.所以只是想我是否可以checkchanged通过用unchecked事件类型替换它来避免事件.

Ser*_*kiy 5

如果您确实需要这些奇怪的事件,那么通过从CheckBox继承来创建自定义复选框.覆盖它的OnCheckedChanged事件,并添加您的Unchecked事件:

public class StrageCheckBox : CheckBox
{
    public event EventHandler Unchecked;

    protected override void OnCheckedChanged(EventArgs e)
    {
        base.OnCheckedChanged(e);

        if (!Checked)
            OnUnchecked(e);
    }

    protected virtual void OnUnchecked(EventArgs e)
    {
        if (Unchecked != null)
            Unchecked(this, e);
    }
}
Run Code Online (Sandbox Code Playgroud)

使用StrangeCheckBoxes而不是默认复选框.订阅Unchecked活动.瞧,你有那种奇怪的行为.

备注实际上我不建议在所有场景中使用自定义控件或if/else.如果您有许多具有此类行为的复选框,则自定义控件优于每个处理程序中的许多重复if/else.如果您有多个控件或所有复选框的单个处理程序,那么我将使用if/else方法.

  • 同意!如果不是现在..可以用于将来参考..方便的代码..谢谢分享.. (2认同)