Assigner touche enter bouton [Résolu]

Signaler
Messages postés
2
Date d'inscription
mercredi 13 juin 2007
Statut
Membre
Dernière intervention
27 octobre 2007
-
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
Hello, j'ai pas mal cherché sur le site comment simplement assigner la toucher Enter du clavier à un bouton dans un form.

J'ai donc une form "mainFrm" et souhaite lui intégrer la gestion des événements clavier, pour pouvoir assigner la touche enter à l'un de mes boutons!

Un grand merci d'avance.

Flo

4 réponses

Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
9
Et pour le cas particulier de la touche "Enter" tu peux aussi utiliser la propriété "AcceptButton" de ta Form, pour la faire pointer sur le bouton en question (et "CancelButton" pour associer un bouton à l'appui sur la touche "Echap").


Working as designed
www.nikoui.fr
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
47
Salut,
Regarde au niveau des events de la form qui contient tes Controls...
Plus particulièrement KeyUp.

<hr />
-My Blog-
Messages postés
6
Date d'inscription
vendredi 26 octobre 2007
Statut
Membre
Dernière intervention
14 décembre 2008

Dans les propriétés de la Form : sous Divers mettre KeyPreview à true.

Dans les événements, double cliquer sur KeyUp pour la Form et pour le Bouton


void FormKeyUp(object sender, KeyEventArgs e)
{
// Pas de distinction entre la touche "retour à la ligne"
// et la touche "enter"
if (Keys.Enter == e.KeyData)
{
MessageBox.Show(e.KeyData.ToString());

this.BtnClick(sender, e);
}
}

void BtnClick(object sender, EventArgs e)
{
MessageBox.Show("Activation du bouton !");
}
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
80
Salut,

"this.BtnClick(sender, e); "
Non, non, non et non ! On n'appelle pas comme ça un gestionnaire d'évènement.

Ne faites pas ça : un gestionnaire d'évènements de clic sur bouton n'est pas censé se prendre une instance de la classe Form en paramètre sender.
En plus, pour la maintenance et les évolutions, c'est un cauchemar. Avec ce genre de code, on peut "cliquer" même si le bouton est désactivé.

Si les autres solutions proposées ne sont pas utilisables, la rustine peut passer par Button.PerformClick à la rigueur (avec un bon commentaire et une bonne explication dans la doc, pour que le prochain dev qui travaillera sur l'application aie conscience de la chose), mais sinon il faut revoir l'archi.

/*
coq
MVP Visual C#
CoqBlog
*/