是否有任何方法或是否可以在取消选中(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事件类型替换它来避免事件.
如果您确实需要这些奇怪的事件,那么通过从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方法.