更多代码的稳定性你也可以使用类TriggerLock代替ignoreEvents标志。
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
using (new TriggerLock())
{
checkBox2.Checked = checkBox1.Checked;
checkBox3.Checked = checkBox1.Checked;
}
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
if (TriggerLock.IsOpened)
{
MessageBox.Show("Changed in 2");
}
}
private void checkBox3_CheckedChanged(object sender, EventArgs e)
{
if (TriggerLock.IsOpened)
{
MessageBox.Show("Changed in 3");
}
}
类TriggerLock,它就像一个信号:
public class TriggerLock
: IDisposable
{
private static int _nUsing = 0;
private bool _bDisposed;
public TriggerLock()
{
_bDisposed = false;
Interlocked.Increment(ref _nUsing);
}
~TriggerLock()
{
Dispose(false);
}
public static bool IsOpened
{
get { return _nUsing == 0; }
}
public void Dispose()
{
Dispose(true);
}
private void Dispose(bool bDisposing)
{
if (bDisposing && !_bDisposed)
{
Interlocked.Decrement(ref _nUsing);
_bDisposed = true;
}
}
}
什么,当他们使用的标签和空格键来浏览和选择?在冒险破解输入法之前,我会先排除你的逻辑。 – 2013-03-21 14:11:55
我可能会断开事件处理程序的更改,然后重新连接它们。 – spender 2013-03-21 14:11:59
你能否告诉我们为什么你想知道它是否是他们选择使用的鼠标?它可能会帮助我们。在几乎所有我能想到的情况下,它都没有什么区别...... – Penfold 2013-03-21 14:13:14