WPF アプリケーションでボタンのシングル クリックとダブル クリックの両方を異なる反応で処理する必要があります。残念ながら、ダブルクリックでは、WPF は 2 回のクリック イベントとダブルクリック イベントを発生させるため、この状況を処理するのは困難です。
タイマーを使用して解決しようとしましたが、成功しませんでした...助けていただければ幸いです。
コードを見てみましょう:
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
それは本当です:O
私はすでに長い時間、ブールフラグ、ロックを使用しようとしました...
あなたはなにか考えはありますか?
一番!