Détection de combinaison de touche

Signaler
Messages postés
2
Date d'inscription
dimanche 26 août 2012
Statut
Membre
Dernière intervention
26 août 2012
-
Uluquiorra
Messages postés
2
Date d'inscription
dimanche 26 août 2012
Statut
Membre
Dernière intervention
26 août 2012
-
J'ai le code suivant pour détecter la combi de touche CTRL + Y

if (e.KeyCode.Equals(Keys.ControlKey & Keys.Y))
{
   ActiverModuleSysteme();
}


et ça ne marche pas, existe t'il une syntaxe pour cette action ou faut t'il enregistrer quelle touche on appuie au KeysDown et quelle touche on relâche au KeyPress (relativement lourd je trouve) :

namespace TestCombiKeys
{
    public partial class Form1 : Form
    {
        public bool ctrlAppuyee = false;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode.Equals(Keys.ControlKey))
            {
                ctrlAppuyee = true;
            }
            if (e.KeyCode.Equals(Keys.Y) && ctrlAppuyee)
            {
                MessageBox.Show("ok");
                ctrlAppuyee = false;
            }
        }

        private void Form1_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode.Equals(Keys.ControlKey))
            {
                ctrlAppuyee = false;
            }            
        }
    }
}

3 réponses

Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
37
Salut.

Pour les combinaisons de touches avec CTRL, Alt ou Shift, tu peux utiliser tout simplement la propriété e.Control, e.Shift ou e.Alt, qui est un booléen.

Donc
if (e.Control && e.KeyCode == Keys.Y) //...


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
29
Salut, la proposition de Krimog est là plus évidente mais pour le fun je rajoute ces deux là :

if ( e.Modifiers Keys.Control && e.KeyCode Keys.Y )


if ( Control.ModifierKeys Keys.Control && e.KeyCode Keys.Y )
Messages postés
2
Date d'inscription
dimanche 26 août 2012
Statut
Membre
Dernière intervention
26 août 2012

Merci pour l'info.