Capturer l'appui sur une touche sur tout une form

survcopt Messages postés 224 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 13 mai 2022 - 9 juin 2009 à 16:15
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 - 9 juin 2009 à 16:50
Bonjour,
J'ai une form avec des boutons texbox combo ....
Je voudrais faire comme un hook pour capturer l'appui sur le clavier de certaines touches.
En effet je ne veux pas que les touches appuyées apparaissent dans la textbox si c'est elle qui a le focus.
Merci

www.survey-copter.com

1 réponse

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
9 juin 2009 à 16:50
Salut

Utilise la propriété KeyPreview de ta form et mets-là à true. Ça enverra d'abord les événements de clavier à ta form avant de les envoyer à ta textbox (KeyUp / KeyDown / KeyPressed)

Avec KeyUp et KeyDown, tu pourras voir très simplement sur quelle touche tu as appuyé grâce à e.KeyCode
Avec KeyPressed, tu ne pourras pas voir quelle touche, mais uniquement quel caractère tu as tapé : e.KeyChar (d'ailleurs, cet événement n'est pas appelé lorsque tu appuies sur Ctrl par exemple).

Cependant, l'événement qui remplit la textbox est l'événement KeyPressed, donc c'est celui-là dont il faut que tu t'occupes si tu souhaites qu'il n'aille pas jusqu'à la textbox.

=> Exemple pour empêcher l'utilisateur de taper un 'C' dans une textbox et affiche un message

this.KeyPreview = true;
this.KeyPressed += new KeyPressEventHandler(Form1_KeyPress);

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{    if (e.KeyChar 'c' || e.KeyChar 'C')
    {
        e.Handled = true; // Si l'événement est Handled, il n'est pas utilisé ailleurs (dans ta textbox par exemple)
        MessageBox.Show("Tu as appuyé sur C et rien n'a été tapé dans ta textbox.");
    }
}

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
1
Rejoignez-nous