Ich muss sowohl den einzelnen Klick und den Doppelklick einer Schaltfläche in einer WPF-Anwendung mit unterschiedlicher Reaktion behandeln. Leider löst WPF bei einem Doppelklick zwei Klickereignisse und ein Doppelklickereignis aus, so dass es schwierig ist, mit dieser Situation umzugehen.WPF: Taste Einzelklick + Doppelklick Problem
Es versuchte es mit einem Timer zu lösen, aber ohne Erfolg ... Ich hoffe, Sie können mir helfen.
Ermöglicht den Code sehen:
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
}
Das Problem ist, dass die 'SINGLE CLICK ACTION' genannt nach der 'DOPPELKLICKEN ACTION' auf Doppelklick. Es ist seltsam, dass ich die doubleClickTimer
setzen auf Doppelklick auf null, sondern in der delayedBtnClick
es ist wahr: O
ich schon versucht habe längere Zeit zu verwenden, eine Bool Flagge und Schloss ...
Haben Sie irgendwelche Ideen?
Am besten!
Vielen Dank! Das e.Handled = True war der Trick! Nochmals vielen Dank für die schnelle Reaktion :) – Hunsoul
Wenn Sie diesen Konstruktor für DispatcherTimer verwenden, startet der Timer sofort, was zu einem einzelnen Einzelklick-Ereignis führt. Auch Background und Current sind Standardwerte, die die Dinge etwas verwirren (ich denke, da könnte Voodoo los sein!). Sehr nützlich, aber - Prost! –
Ich sehe keine Verwendung von DoubleClickTime im Code. Stattdessen sehe ich eine hart codierte Verzögerung. Es ist normal? – SandRock