Как мы должны обрабатывать события клавиатуры в WPF? Должно ли это быть KeyUp или KeyDown? - PullRequest
3 голосов
/ 02 февраля 2012

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

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

Ответы [ 2 ]

4 голосов
/ 02 февраля 2012

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

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

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

Если вы хотите что-то сделать, когда пользователь отпустил SPACE, тогда используйте KeyUp

0 голосов
/ 02 февраля 2012

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

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

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

...