esto funcionará con seguridad. Tenga cuidado de manejar el evento KeyUp
y no keyDown
.
private void mainForm_KeyUp(object sender, KeyEventArgs e)
{
if (e.Modifiers == Keys.Control && e.KeyCode == Keys.A)
{
//insert here
}
}
Para mí, keyDown
no funcionó, keyU
p trabajó en cambio por el mismo código.
No sé por qué, pero parece porque keyDown
evento ocurre directamente después de pulsar cualquier tecla, incluso si eso era tecla CTRL, por lo que si ha presionado ctrl +Hasta va a presionar ctrl clave antes de la tecla UP y por lo tanto el evento se producirá antes de que pueda presionar la otra, también se pulsa la segunda tecla se activa el evento de nuevo.
Durante el uso de KeyUp
no se disparará el evento hasta que suelte la tecla, por lo que puede presionar Ctrl , y la prensa la segunda llave, lo que dará lugar a un evento.
Esto nunca es cierto en mi teclado - por ejemplo, si se presiona hacia abajo y LShiftKey Keys.Up, que e.Shift no sería cierto, y e.Modifiers permanecería siempre Ninguno. ¿Alguna idea de por qué? – Zolomon
Parece que las teclas de flecha son especiales de alguna manera. Esta pregunta da una idea: http://stackoverflow.com/questions/1646998/up-down-left-and-right-arrow-keys-do-not-trigger-keydown-event –
solo encuentro hay e.Key pero no e.KeyCode. Tampoco hay e.Modifier. – KMC