Как узнать, когда нажал Ctrl + Пробел? - PullRequest
2 голосов
/ 17 ноября 2011

Я хочу вызвать функцию, когда нажата Ctrl + пробел . Я искал больше, но не мог найти то, что я хочу.

Ответы [ 4 ]

6 голосов
/ 17 ноября 2011

Вам необходимо добавить обработчик событий для KeyDown, например: KeyDown="TextBox_KeyDown" в вашем TextBox. А потом в обработчике событий:

if (e.Key == Key.Space && e.KeyboardDevice.Modifiers == ModifierKeys.Control)
{ 
      //Do Stuff
}
2 голосов
/ 17 ноября 2011

Используйте что-то вроде этого:

private void Window_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Space && 
       (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
    {
        // Do what you need here
    }
}
1 голос
/ 17 ноября 2011

Если вы хотите поймать все ключи, есть ли у вас фокус или нет, в вашем классе вам просто нужно добавить в конструктор:

// To capture keyboard
EventManager.RegisterClassHandler(typeof(Window), Keyboard.KeyDownEvent, new System.Windows.Input.KeyEventHandler(keyDown), true);

И добавьте метод: (это пример, он не предназначен для того, что вы хотите)

private void keyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
    if (e.Key == Key.Space)
    {
        code;
    }
    else if ((Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)) &&    Keyboard.IsKeyDown(Key.T))
    {
        code;
    }
}
1 голос
/ 17 ноября 2011

Это должно заставить вас работать -

private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
  if (e.Key == Key.Space && Keyboard.Modifiers == ModifierKeys.Control)
  { 
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...