我需要在WPF应用程序中处理按钮的单击和双击事件,并进行不同的反应。
不幸的是,在双击时,WPF会触发两次单击事件和一个双击事件,因此很难处理这种情况。
我尝试使用计时器来解决问题,但没有成功……希望您能帮助我。
以下是代码:
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
}
问题是在双击后,“DOUBLE CLICK ACTION”之后调用了“SINGLE CLICK ACTION”。奇怪的是,在双击时我将“doubleClickTimer”设置为null,但在“delayedBtnClick”中它却为true :O我已经尝试过使用更长的时间、布尔标志和锁定…… 你有什么建议吗?
祝好!