c# - "checked = false"的复选框(事件)方法

标签 c# .net winforms

(Windows Form) 复选框未被选中时(但不是选中时),是否有任何方法或是否有可能编写一个方法来执行一组指令?我将提供我的示例代码来澄清这一点。

现有示例代码:

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

问: if condition 是否可以通过为此编写一个仅在未选中复选框时执行的方法来避免。

插图: 像这样:

private void ChkBox_Unchecked(object sender, EventArgs e)
{
    MessageBox.Show("unchecked");
}

附加评论:对于事件“checkbox is checked”,我没有任何要执行的东西。所以我只是在想我是否可以通过将 checkchanged 事件替换为未选中 事件类型。

最佳答案

如果你真的需要那些奇怪的事件,那么通过继承 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);
    }
}

使用 StrangeCheckBoxes 代替默认复选框。订阅 Unchecked 事件。瞧,你的行为很奇怪。

备注 其实我不建议在所有情况下都使用自定义控件或if/else。如果您有许多具有这种行为的复选框,那么自定义控件比每个处理程序中的许多重复 if/else 更好。如果您有多个控件或所有复选框的单个处理程序,那么我会采用 if/else 方法。

关于c# - "checked = false"的复选框(事件)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15200618/

相关文章:

c# - 如何在启动时将表单加载更改为其他表单?

.NET:如何检查鼠标是否在控件中?

c# - 可变参数的LINQ方法

.net - 在此 bind() 参数中省略 unit 参数时,我是否应该看到不同之处?

c# - 使用数据表的内容更新 SQL 表

.net - WPF 进度条中的颜色错误

.net - LINQ2SQL : How to modify fields values when loading anonymous entities?

c# - 更新 ListBox 的 DisplayMember

c# - 获取列表框选定的项目

c# - 如何将搜索词解析为各种问题类型?