Используйте clickcount = 2 и запретите вход в событие левого клика в c # wpf - PullRequest
0 голосов
/ 09 июля 2019

Я должен выполнить некоторый код при щелчке левой кнопкой мыши, и я должен выполнить отдельные действия при двойном щелчке, но мой 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
        }
    }
}

1 Ответ

0 голосов
/ 09 июля 2019

Как сказал @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 установлен Background в пользовательском интерфейсе, даже если это Transparent, иначе выне сможет перехватить события мыши.

...