Мне нужно обработать ввод (среди других ключей) в форме выигрыша без создания звука ошибки, но только если текущий активный элемент управления не обработал его уже.Обработка необработанного ввода ключа C#
Итак, когда ввод нажат в TextBox или DateTimePicker, я хочу обработать его с помощью формы (без звука ошибки), но если она нажата, например, в DataGridView, я хочу, чтобы она обрабатывалась DataGridView по умолчанию.
OnKeyUp решает мою проблему с обработкой только необработанных нажатий клавиш (e.Handled) и ProcessCmdKey (this), решает проблему звука, но ни один из них не решает.
Любые предложения?
параметр Msg для ProcessCmdKey содержит HWND целевого управления (окно) , Вы можете использовать Control.FromHandle для получения управляемого объекта Control. – Tergiver
Я не знал, что обработка KeyPress предотвращает звук ошибки. Я попробовал его с KeyUp и почему-то предположил, что он не будет работать и с KeyPress. Однако, чтобы поймать ключевые события из формы, вам не нужно делать все это, просто установите для свойства KeyPreview формы значение true и обработайте ее ключевые события. – Damir
Кроме того, чтобы избежать явного указания того, какие элементы управления выполняют или не обрабатывают ввод, достаточно добавить &&! E.Handled в выражении if – Damir