2017-08-07 1 views
0

J'ai une application winform. Dans l'application, j'ai un panneau avec plusieurs boutons. Maintenant, lorsque les boutons n'ont pas le focus je peux capturer les événements claviers dans le formulaire lui-même. Mais quand les Boutons ont le Focus le formulaire (même si les Boutons n'obtiennent pas l'Explecitement de l'événement) seulement ils obtiennent l'Événement claveté et non le formulaire. Maintenant, ma question est: Y at-il un moyen de centraliser le comportement de la touche (sans créer un événement keypressed pour chaque bouton et appeler une méthode centrale avec cet événement)?Possibilité de demander un signal à clé à un emplacement centralisé sous forme de panneaux?

+0

Divisez la différence: créez un gestionnaire unique et _attachez-le à l'événement de chaque bouton. Un code appelé par tous. – DonBoitnott

+0

@DonBoitnott Je connais cette méthode. Cela signifierait que je devrais utiliser l'événement keypressed pour chaque bouton. Je me demandais donc s'il était possible d'éviter cela – Thomas

Répondre

0

Essentiellement seulement 1 méthode doit être définie avec les paramètres appropriés: Exemple:

private void Event_Key_Press_Check(object sender, KeyPressEventArgs e) 

Cette méthode ne doit alors être mis en tant que nom de la méthode utilisée pour l'événement (le concepteur de formulaire), ou ajouté en tant qu'événement.

De cette façon, seule une méthode est utilisée.

Il n'y a donc pas de raccourci et l'événement doit être défini pour chaque bouton (au lieu de 1 événement central toujours déclenché).

0

Définissez la propriété de formulaire KeyPreview à true et définissez le gestionnaire KeyPress. Ensuite, le formulaire va gérer cet événement avant les boutons.

Voir KeyPreview MSDN documentation.

0

J'ai eu le même problème, et il était assez facile à résoudre :)

Vérifiez ici: KeyPress at form level with controls

Il suffit de définir la propriété KeyPreview (de votre formulaire) True. De cette façon, votre formulaire traitera KeyPress événement avant tout autre contrôle, même si l'un d'eux a le focus