如何在以编程方式检查控件时防止触发 CheckedChanged 事件?
我通常按以下方式进行。
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
}
是否有更好或更通用的解决方案?
最佳答案
我觉得你的方法很好。
另一种方法是在检查前删除 EventHandler,然后在检查后重新添加。这种方式消除了对 isFrozen 变量的需要。
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
}
关于c# - 以编程方式检查控件时如何防止触发 CheckedChanged 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8089072/