Détection de combinaison de touche

Uluquiorra Messages postés 2 Date d'inscription dimanche 26 août 2012 Statut Membre Dernière intervention 26 août 2012 - 10 févr. 2010 à 15:38
Uluquiorra Messages postés 2 Date d'inscription dimanche 26 août 2012 Statut Membre Dernière intervention 26 août 2012 - 11 févr. 2010 à 08:56
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

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 50
10 févr. 2010 à 17:25
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é. -
1
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 42
11 févr. 2010 à 00:40
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 )
0
Uluquiorra Messages postés 2 Date d'inscription dimanche 26 août 2012 Statut Membre Dernière intervention 26 août 2012
11 févr. 2010 à 08:56
Merci pour l'info.
0