物理の駅 Physics station by 現役研究者

テクノロジーは共有されてこそ栄える

C# WPFのタップで右クリック(長押し)を実装する方法

TouchDownイベントとTouchUpイベントにそれぞれ下記の関数をbindすればよい。

private readonly Stopwatch SWTouch = new Stopwatch();

private void Image_TouchUp(object sender, TouchEventArgs e)
{
    if (SWTouch.Elapsed.TotalMilliseconds > 700)
    {
        RightButtonFunc();
    }
    else
    {
        LeftButtonFunc();
    }
}

private void Image_TouchDown(object sender, TouchEventArgs e)
{
    SWTouch.Restart();
}

なお、マウスイベントと両立させるには、MouseButtonEventArgsStylusDevicenull かどうかをチェックすれば良い。nullでない場合はタッチかスタイラスペンによる入力である。

public void Image_MouseDown(object sender, MouseButtonEventArgs e)
{
    if (e.StylusDevice != null) return;
    //...
}