物理の駅 by onsanai

Physics Station → PhSt 質問・疑問・間違いの指摘は、コメントに書くか、直接伝えるときっと良いことがあります。主にWindows or Ubuntu用の記事です

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;
    //...
}