Je dois traiter enter (parmi d'autres clés) sur la forme win sans qu'elle produise un son d'erreur, mais seulement si le contrôle actif n'est pas déjà traité. Donc, quand enter est pressé dans un TextBox ou un DateTimePicker, je veux le traiter avec un formulaire (sans son d'erreur), mais s'il est pressé, par exemple, dans DataGridView, je veux qu'il soit géré de la manière DataGridView le fait par défaut. OnKeyUp résout mon problème en gérant uniquement les frappes non gérées (e.Handled) et ProcessCmdKey (this) résout le problème de son, mais ne résout pas les deux.Traitement de la clé d'entrée non traitée C#
Des suggestions?
le paramètre Msg à ProcessCmdKey contient le HWND du contrôle cible (fenêtre) . Vous pouvez utiliser Control.FromHandle pour obtenir l'objet de contrôle géré. – Tergiver
Je ne savais pas que la manipulation de KeyPress empêche le son d'erreur. Je l'ai essayé avec KeyUp et je suppose que ça ne fonctionnerait pas non plus avec KeyPress. Toutefois, pour capturer les événements Key du formulaire, vous n'avez pas besoin de faire tout cela, il suffit de définir la propriété KeyPreview du formulaire sur true et de gérer ses événements Key. – Damir
De plus, pour éviter d'indiquer explicitement quels contrôles saisissent ou ne traitent pas, il suffit d'ajouter &&! E.Handled dans l'instruction if – Damir