我必须同时处理单击和双击WPF应用程序中按钮的不同反应。 不幸的是,在双击时,WPF会触发两个单击事件和一个双击事件,所以很难处理这种情况。WPF:Button单击+双击问题
它试图用计时器解决它,但没有成功......我希望你能帮助我。
让我们来看看代码:
private void delayedBtnClick(object statInfo)
{
if (doubleClickTimer != null)
doubleClickTimer.Dispose();
doubleClickTimer = null;
this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new VoidDelegate(delegate()
{
// ... DO THE SINGLE CLICK ACTION
}));
}
private void btn_Click(object sender, RoutedEventArgs e)
{
if (doubleClickTimer == null)
doubleClickTimer = new Timer(delayedBtnClick, null, System.Windows.Forms.SystemInformation.DoubleClickTime, Timeout.Infinite);
}
}
}
private void btnNext_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (doubleClickTimer != null)
doubleClickTimer.Change(Timeout.Infinite, Timeout.Infinite); // disable it - I've tried it with and without this line
doubleClickTimer.Dispose();
doubleClickTimer = null;
//.... DO THE DOUBLE CLICK ACTION
}
的问题是,“只需点击一下行动”上双击的“双击动作”后调用。这是奇怪的是,我设置了doubleClickTimer
为null上双击,但在delayedBtnClick
这是真的:O型
我已经尝试过使用更长的时间,一个布尔标志和锁...
你有什么想法?
最好!
非常感谢! e.Handled = true是诀窍! 再次感谢您的快速反应:) – Hunsoul 2009-06-10 08:14:48
如果您使用该构造函数的DispatcherTimer计时器立即启动,这将导致一个虚假的单击事件。另外背景和当前是默认值,所以混淆了一些东西(以为可能会有一些巫术出现在那里!)。非常有用 - 干杯! – 2013-01-16 16:55:09