2012-02-02 2 views
3

Я использую WPF со всеми туннельными и пузырящимися событиями, и я должен сказать, что они просто великолепны и мощны.
Но я всегда сомневаюсь в том, следует ли использовать [PreviewKeyUp и KeyUp] или [PreviewKeyDown и Keydown]?Как мы должны обрабатывать события клавиатуры в WPF? Должно ли это KeyUp или KeyDown?

Какую комбинацию я должен использовать, чтобы реагировать на нажатия клавиш и почему?

+0

Это зависит от того, где вы хотите быть в цепи. KeyDowns обрабатываются до KeyUps. Поэтому, если вы хотите остановить его, прежде чем он попадет в обработчик события KeyDown. Найдите события Bubbling и Routed Events в MSDN. – Paparazzi

ответ

4

Зависит от того, что вы хотите сделать:

  1. PreviewKeyDown = ДО нажатия клавиши
    Пример: Если у вас есть событие на текстовом поле текущая нажатая клавиша не добавляется в TextBox.Text
  2. PreviewKeyUp = дО ключ отпустить
  3. KeyDown = ПОСЛЕ нажатия клавиши
    Пример: Если у вас есть событие на текстовом поле текущая нажатая клавиша добавляется к TextBox.Text
  4. KeyUp = ПОСЛЕ ключ отпустить

Итак, еще раз, это зависит от того, что вы хотите сделать. Если вы хотите добавить проверку TextBox, используйте PreviewKeyDown, чтобы игнорировать текст, если он неверен.

Если вы хотите что-то сделать, когда пользователь отпустил ПРОБЕЛ, тогда мы KeyUp

0

Все зависит от ситуации, например, выбор элемента в списке должен быть KeyDown, чтобы ключ мог удерживаться и выбранный элемент был изменен.

Если у вас есть элемент с несколькими визуальными состояниями, например. кнопка KeyDown может изменить визуальное состояние, тогда KeyUp вернет визуальное состояние в исходное состояние и выполнит команду.

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