cela fonctionnera à coup sûr. Veillez à gérer l'événement KeyUp
et non keyDown
.
private void mainForm_KeyUp(object sender, KeyEventArgs e)
{
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.A)
{
//insert here
}
}
Pour moi, keyDown
ne fonctionne pas, p keyU
a travaillé à la place pour le même code.
Je ne sais pas pourquoi, mais il semble que l'événement se produit keyDown
directement après avoir appuyé sur une touche, même si cela ctrl clé, donc si vous appuyez sur Ctrl + Up vous appuyez sur ctrl touche avant la touche UP et donc l'événement se produira avant que vous puissiez appuyer sur l'autre, également en appuyant sur la deuxième touche va déclencher à nouveau l'événement.
Lors de l'utilisation KeyUp
ne déclenche pas l'événement jusqu'à ce que vous relâchez la touche, vous pouvez appuyer sur ctrl , et appuyez sur la seconde touche, ce qui déclenchera un événement.
Cela n'est jamais vrai sur mon clavier - par exemple, si j'appuie sur LShiftKey et Keys.Up, cela ne sera jamais vrai, et e.Modifiers restera toujours None. Une idée pourquoi? – Zolomon
Il semble que les touches fléchées sont spéciales d'une manière ou d'une autre. Cette question donne un aperçu: http://stackoverflow.com/questions/1646998/up-down-left-and-right-arrow-keys-do-not-trigger-keydown-event –
Je trouve seulement qu'il y a e.Key mais pas e.KeyCode. Il n'y a pas non plus e.Modifier. – KMC