2009-08-23 10 views
4

Je ne peux pas obtenir l'état de clé Ctrl dans le gestionnaire d'événements KeyUp lorsque la clé Ctrl est libérée.Comment tester les touches Ctrl?

Dois-je tester le code clé de l'argument d'événement?

Existe-t-il un autre moyen?

Répondre

13

Le câblage d'un événement vers le gestionnaire d'événements KeyUp fonctionnera.

Le code suivant déclenche lorsque la touche Ctrl est libérée:

private void Form1_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.ControlKey) 
    { 
     MessageBox.Show("Control key up"); 
    } 
} 


Si vous voulez tester si le Ctrl a été pressé en combinaison avec une autre combinaison de touches, par exemple : Ctrl + F1 puis l'extrait de code suivant peut s'appliquer:

private void Form1_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (e.Control && e.KeyCode == Keys.F1) 
    { 
     MessageBox.Show("Control + F1 key up"); 
    } 
} 


Side note: Vous pourriez avoir à activer KeyPreview sur la forme afin de capturer tous les événements de contrôle KeyUp dans un seul endroit.

+0

dans le gestionnaire d'événements de keyup, e.Control == false. mais e.keycode == keys.controlkey – Benny

+0

@Benny, 'e.KeyCode' sait quelle touche a été libérée. 'e.Control' est vrai seulement tant que la touche de contrôle est maintenue, ce qui explique pourquoi' (e.Control && e.KeyCode == Keys.F1) 'est vrai lorsque F1 est libéré ** alors que ** la touche de contrôle est maintenue . – kdbanman

0
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) 
{ 
    if(e.Modifiers == Keys.Control) 
    ... 
} 
+1

dans keyup, les e.modifiers == none – Benny

Questions connexes