La meilleure façon que j'ai trouvée pour gérer les entrées clavier sur un Winform est de les traiter après la frappe et avant que le contrôle ciblé ne reçoive l'événement. Microsoft maintient une propriété intégrée au niveau du formulaire appelée .KeyPreview pour faciliter cette chose précise :
public frmForm()
{
// ...
frmForm.KeyPreview = true;
// ...
}
Les événements _KeyDown, _KeyPress et/ou _KeyUp du formulaire peuvent alors être rassemblés pour accéder aux événements d'entrée avant que le contrôle de formulaire ciblé ne les voie, et vous pouvez appliquer une logique de gestion pour capturer l'événement à cet endroit ou l'autoriser à passer au contrôle de formulaire ciblé.
Bien qu'elle ne soit pas aussi structurellement gracieuse que l'architecture de routage d'événements de XAML, elle simplifie considérablement la gestion des fonctions de niveau formulaire dans Winforms. Voir le Notes MSDN sur KeyPreview pour les mises en garde.
Meilleurs vœux...