Лучшим способом я нашел, чтобы управлять вводом с клавиатурой на Windows Forms формы для его обработки после нажатия клавиши и до того, как целенаправленный контроль получает событие. Microsoft поддерживает встроенный Form
-уровны свойства с именем .KeyPreview, чтобы облегчить эту точную вещь:
public frmForm()
{
// ...
frmForm.KeyPreview = true;
// ...
}
Тогда форма-х _KeyDown, _KeyPress, и/или события _KeyUp может быть выстраивали для доступа входных событий до сфокусированного контроль формы всегда видит их, и вы можете применить логику обработчика, чтобы зафиксировать там событие или позволить ему перейти к сфокусированному управлению формой.
Хотя это не так структурно изящно, как XAML's архитектура маршрутизации событий, это значительно упрощает управление функциями уровня на Winforms. См. MSDN notes on KeyPreview для оговорок.
Вы работаете в среде WPF или еще чего-нибудь еще? – epotter
@epotter: Второе слово обозначает WinForms. –