Как не обрабатывать перенаправленное событие KeyDown, которое уже было обработано, например.TextBox - PullRequest
1 голос
/ 27 января 2011

У меня есть окно в WPF с прикрепленным обработчиком события KeyDown.

Когда пользователь нажимает цифровую клавишу (0-9), я отвечаю на событие.Я использую 0-9 в качестве сочетаний клавиш для выбора радиокнопки.Например.нажатие клавиши 3 выберет третью радиокнопку.

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

Прямо сейчас, когда пользователь нажимает 3, когда внутри TextBox, текст TextBox установлен на 3, но также выбрана 3-я радиопереключатель.

Я думал, что TextBox установит e.Handled в true, когда пользователь нажимает клавишу внутри TextBox, но это не так.

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

Полагаю, мне нужно лучшее понимание перенаправленных событий, чтобы решить это, или, возможно, решить это другим способом.

Ответы [ 2 ]

0 голосов
/ 27 января 2011

Попробуйте использовать свойство Form. KeyPreview, а также свойство ActiveControl для запуска логики

0 голосов
/ 27 января 2011

Вы можете проверить OriginalSource свойство RoutedEventArgs (KeyPressEventArgs в вашем случае).Если это TextBox, не обращайтесь с этим.Если это не так, сделайте свою RadioButton логику выбора.

...