Problème gestion touches [Résolu]

Messages postés
47
Date d'inscription
mardi 21 novembre 2006
Dernière intervention
5 novembre 2016
- - Dernière réponse : soussous78
Messages postés
47
Date d'inscription
mardi 21 novembre 2006
Dernière intervention
5 novembre 2016
- 27 mars 2008 à 14:12
Bonjour tout le monde,
J'aurai besoin de savoir comment utiliser les touches clavier sur une form
j'en suis a la phase : essayer de comprendre
Je crée un évènement :
this.Form1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.appuyTouche);

et je crée la methode:
private void appuyTouche(object sender,System.Windows.form.KeyEventArgs e)
{
   MessageBox.Show(e.KeyCode.ToString());
}

aucun message n'apparait quand j'appuie sur une touche.
par contre si je crée un button et que je met l'evenement dedans, j'ai le nom de la touche appuyée sauf la touche entrée et les flêches de direction...

Quelqu'un pourrait m'expliquer comment faire pour que les touches fonctionnent pour sur la form et pour que toutes les touches soient prises en compte?

D'avance merci
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
3489
Date d'inscription
lundi 16 octobre 2000
Dernière intervention
30 octobre 2008
43
3
Merci
Salut,

Pour que ta form intercepte le KeyDown, il faut tu mettes sa propriété KeyPreview a true.

Pour les touches de direction, colle cette méthode dans le code de ton formulaire :

<hr />

const
int WM_KEYDOWN = 0x100;

const
int WM_SYSKEYDOWN = 0x104;

protected
override
bool ProcessCmdKey(
ref
Message msg,
Keys keyData)
{

   const
int WM_KEYDOWN = 0x100;

   const
int WM_SYSKEYDOWN = 0x104;
   if ((msg.Msg WM_KEYDOWN) || (msg.Msg WM_SYSKEYDOWN))
   {

      switch (keyData)
      {

         case
Keys.Down:

            MessageBox.Show(
"Down");

            break;

         case
Keys.Left:

            MessageBox.Show(
"Left");

            break;

         case
Keys.Up:

            MessageBox.Show(
"Up");

            break;

         case
Keys.Right:

            MessageBox.Show(
"Right");

            break;
      }
   }

   return
base.ProcessCmdKey(
ref msg, keyData);
}
<hr />

Mx
MVP C# 

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 118 internautes nous ont dit merci ce mois-ci

Commenter la réponse de MorpionMx
Messages postés
131
Date d'inscription
mardi 21 septembre 2004
Dernière intervention
23 septembre 2011
0
Merci
Bonjour,




this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);

et la méthode:






private
void Form1_KeyDown(object sender, KeyEventArgs e)




{
    


MessageBox.Show(e.KeyCode.ToString());


}

c'est tout :)
Commenter la réponse de cs_zatt
Messages postés
47
Date d'inscription
mardi 21 novembre 2006
Dernière intervention
5 novembre 2016
0
Merci
ok ca marche merci beaucoup..
Commenter la réponse de soussous78
Messages postés
47
Date d'inscription
mardi 21 novembre 2006
Dernière intervention
5 novembre 2016
0
Merci
sinon quelqu'un aurait il une astuce pour ne pas avoir le temps d'arret a l'appui d'une touche?
Je m'explique. Lors de l'appui d'une touche, la touche se note, puis il y a une pause et ensuite si la touche est toujours appuyée, on a plusieurs fois la touche inscrite sur l'ecran.
Je voudrai savoir si on peut eviter se temps d'arret?
Merci d'avance
Commenter la réponse de soussous78

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.