使用 clickcount = 2 并防止在 c# wpf 中进入左键单击事件

Use clickcount = 2 and prevent from entering into left click event in c# wpf

我必须在鼠标左键单击时执行一些代码,我必须在双击时执行单独的操作,但我的 Canvas 不支持双击事件,所以,我正在努力完成工作通过 clickcount 但它也在进入 clickcount = 2 之前进入左键单击事件。我该如何防止这种情况?我知道我必须使用 e.handled = true 但我不明白在哪里。任何帮助将不胜感激。

void Canvas_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
    if(e.ClickCount == 2)
    {
     // Some code
    }
    else
    {
        if(e.ChangedButton == MouseButton.Left)
        {
            // some code
        }
    }
}

正如@IDarkCoder 所说,这似乎已经在另一个问题上得到了回答。后面的代码应该是这样的:

private Timer _delayTimer;

public Constructor()
{
...
  _delayTimer = new Timer(300);
  _delayTimer.Elapsed += DelayTimer_Elapsed;
}

private void Canvas_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
  if (e.ChangedButton == MouseButton.Left && e.ClickCount == 1)
  {
    _delayTimer.Start();
  }
  else if (e.ClickCount == 2)
  {
    e.Handled = true;
    _delayTimer.Stop();
  }
  else
  {
     _delayTimer.Stop();
  }
}

private void DelayTimer_Elapsed(object sender, ElapsedEventArgs e)
{
 // Do your thing here for Single Left Click.
}

还要确保你的 Canvas 在 UI 中设置了 Background,即使它是 Transparent,否则你不会能够捕获鼠标事件。