如何防止程序检查控制射击时,事件的CheckedChanged? [英] How to prevent firing CheckedChanged event when checking a control programmatically?

查看:127
本文介绍了如何防止程序检查控制射击时,事件的CheckedChanged?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何避免编程方式检查控件时触发的CheckedChanged事件?

How do I prevent firing CheckedChanged event when checking a control programmatically?

我通常做这种方法如下:

I usually do this the following way.

private bool isFrozen = false;

private void btn1_CheckedChanged(object sender, EventArgs e)
{
    if (isFrozen) 
        return;

    isFrozen = true;
    btn2.Checked = false;
    isFrozen = false;

    // Do some stuff
}

private void btn2_CheckedChanged(object sender, EventArgs e)
{
    if (isFrozen) 
        return;

    isFrozen = true;
    btn1.Checked = false;
    isFrozen = false;

    // Do another stuff
}



有没有更好或更常见的解决方案?

Is there a better or more common solution?

推荐答案

我觉得你的方式是好的。

I think your way is fine.

另一种方式来做到这一点是检查之前删除的事件处理程序,然后在检查后重新添加。这种方式消除了的isFrozen变量的需求。

The other way to do it is remove the EventHandler before the check, and then add it back again after the check. This way eliminates the need for the isFrozen variable.

private void btn1_CheckedChanged(object sender, EventArgs e)
{
  btn2.CheckedChanged -= btn2_CheckedChanged;
  btn2.Checked = false;
  btn2.CheckedChanged += btn2_CheckedChanged;

    // Do some staff
}

private void btn2_CheckedChanged(object sender, EventArgs e)
{
  btn1.CheckedChanged -= btn1_CheckedChanged;
  btn1.Checked = false;
  btn1.CheckedChanged += btn1_CheckedChanged;

    // Do another staff
}

这篇关于如何防止程序检查控制射击时,事件的CheckedChanged?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆