Мне приходится обрабатывать как одиночный, так и двойной щелчок кнопки в приложении 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
}
Проблема в том, что «ДЕЙСТВИЕ ОДНОГО ЩЕЛЧКА» вызывается после «ДВОЙНОГО ЩЕЛЧКА» при двойном щелчке Странно, что я установил значение doubleClickTimer
в null при двойном щелчке, но в delayedBtnClick
это правда: O
Я уже пытался использовать более длительное время, флаг bool и блокировку ...
У вас есть идеи?
Лучший!