Как поймать Control-V в приложении C #? - PullRequest
6 голосов
/ 06 октября 2008

Я пытался переопределить WndProc, но сообщения о событии вставки не появляется.

Затем я попытался создать собственный фильтр и, используя метод PreFilterMessage, смог перехватить сообщение со значением 257 (событие KEYUP), но этого недостаточно ...

Ответы [ 2 ]

18 голосов
/ 06 октября 2008

Использование:

 protected override void OnKeyDown(KeyEventArgs e)
 {
      if (e.KeyCode == Keys.V && e.Modifiers == Keys.Control)
      {
            MessageBox.Show("Hello world");
      }
      base.OnKeyDown(e);
  }

Убедитесь, что ваша форма KeyPreview = true.

2 голосов
/ 06 октября 2008

Вы можете сделать это:

  • Перехват Ctrl + V в KeyDown (или KeyUp) вашей формы
  • Создание в форме меню, содержащего параметр «Вставить» с сочетанием клавиш Ctrl + V (возможно, будет лучше, поскольку пользователи будут искать эти параметры)
  • Перехват сообщения KEYDOWN, как вы описали в вопросе, и проверка, нажата ли Ctrl в это время (я думаю, что это самое сложное из всех 3).

Лично я бы воспользовался опцией меню.

...