Определите, нажата ли клавиша Es c при изменении размера (MouseLeftButtonDown + MouseMove) - PullRequest
0 голосов
/ 26 мая 2020

В моем приложении WPF мне нужно выяснить, нажата ли клавиша «Es c» в событиях MouseDown и MouseMove (т.е. операции изменения размера).

Я пробовал код ниже в событии MouseMove:

isEscapePressed = Keyboard.IsKeyDown(Key.Escape);

но isEscapePressed истинно, когда клавиша «Es c» находится только в состоянии удержания. в противном случае это неверно.

Я также пытался использовать события OnKeyDown и OnPreviewKeyDown. но они не срабатывают, когда левая кнопка мыши находится в нажатом состоянии.

в моем приложении я использую ContentControl внутри Border и использую MouseMove и MouseLeftButtonDown события Border для изменения размера.

<Border>
   <ContentControl></ContentControl>
</Border>

Пожалуйста, дайте идею для этого случая.

1 Ответ

0 голосов
/ 29 мая 2020

Возможно, вы можете использовать следующее:

  private bool _isEscapePressed = false;
  private void MouseMoveEventHandler(object sender, System.Windows.Input.MouseEventArgs e)
  {

     if (!_isEscapePressed && Keyboard.IsKeyDown(Key.Escape))
     {
        _isEscapePressed = true;

        // Code for Esc pressed down

     }
     else if (_isEscapePressed && !Keyboard.IsKeyDown(Key.Escape))
     {
        _isEscapePressed = false;

        // Code for Esc released

     }

     // Mouse move code

  }
...