questo funzionerà di sicuro. Prestare attenzione a gestire l'evento KeyUp
e non keyDown
.
private void mainForm_KeyUp(object sender, KeyEventArgs e)
{
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.A)
{
//insert here
}
}
Per me, keyDown
non ha funzionato, keyU
p lavorato invece per lo stesso codice.
Non so perché, ma sembra a causa keyDown
evento si verifica subito dopo aver premuto un tasto, anche se questo era ctrl chiave, quindi se si è premuto Ctrl + Up potrete premere ctrl prima della chiave UP e quindi l'evento si verificherà prima che sia possibile premere l'altro, anche premendo il secondo tasto si attiverà nuovamente l'evento.
Durante l'utilizzo KeyUp
non attivare l'evento fino a quando si rilascia il tasto, in modo da poter premere ctrl , e la stampa il secondo tasto, che attiverà un evento.
fonte
2016-01-02 17:51:50
Questo non è mai vero sulla mia tastiera - ad esempio, se premo LShiftKey e Keys.Up, esso e.Shift non sarebbe mai vero, e e.Modificatore rimarrà sempre None. Qualche idea del perché? – Zolomon
Sembra che i tasti freccia siano in qualche modo speciali. Questa domanda fornisce alcune informazioni: http://stackoverflow.com/questions/1646998/up-down-left-and-right-arrow-keys-do-not-trigger-keydown-event –
Ho trovato solo e.Key ma nessun e.KeyCode. Non c'è anche e.Modifier. – KMC