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?
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?
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.
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if(e.Modifiers == Keys.Control)
...
}
dans keyup, les e.modifiers == none – Benny
dans le gestionnaire d'événements de keyup, e.Control == false. mais e.keycode == keys.controlkey – Benny
@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