Как трябва да обработваме събития от клавиатурата в WPF? Трябва ли да е KeyUp или KeyDown?

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

Коя комбинация трябва да използвам, за да реагирам на натискане на клавиши и защо?


person GuruC    schedule 02.02.2012    source източник
comment
Зависи къде искате да сте във веригата. KeyDowns се обработват преди KeyUps. Така че, ако искате да го спрете, преди да стигне до събитие, управлявайте KeyDown. Потърсете Event Bubbling и Routed Events в MSDN.   -  person paparazzo    schedule 03.02.2012


Отговори (2)


Зависи какво искате да правите:

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

Така че отново зависи от това какво искате да направите. Ако искате да добавите проверка на TextBox, използвайте PreviewKeyDown, за да игнорирате текста, ако е неправилен.

Ако искате да направите нещо, когато потребителят пусне SPACE, използвайте KeyUp

person MyKuLLSKI    schedule 02.02.2012

Всичко зависи от ситуацията, например избирането на елемент в списък ще иска да бъде KeyDown, така че клавишът да може да се задържи и избраният елемент да се промени.

Ако имате елемент с множество визуални състояния, напр. бутон, KeyDown може да промени визуалното състояние, след което KeyUp ще върне визуалното изображение в първоначалното състояние и ще изпълни командата.

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

person Lukazoid    schedule 02.02.2012