visual una teclas teclado tecla studio rapidas presionada detectar combinacion boton atajos asignar c# winforms keyboard shortcut

c# - una - Atajo de teclado para un botón



teclas en c# (3)

En C # (Microsoft Visual Studio 2010 ), ¿cómo puedo asignar un método abreviado de teclado a un botón como el siguiente?

private void closeButton_Click(object sender, EventArgs e) { // Close the program this.Close(); }

Sé que puedo usar el carácter "&" en el Texto del botón y crear un acceso directo de Alt - n , pero me gustaría crear un acceso directo de pulsación de una sola tecla, como c para ejecutar lo anterior.


Aquí hay un enfoque diferente:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { switch(keyData) { case Keys.F2: // do something... return true; case Keys.F3: // do something... return true; case Keys.F4: // do something... return true; default: return base.ProcessCmdKey(ref msg, keyData); } }

No es necesario cambiar el valor de KeyPreview .


KeyDown es tu amigo;) Por ejemplo, si quieres presionar la tecla de acceso directo A mientras se presiona Shift , prueba esto:

void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.A && e.Shift) // Do something }

Si quieres un atajo de teclado "real" puedes usar ganchos. ¿Mirar la pregunta de desbordamiento de pila RegisterHotKeys y los ganchos de teclado global? .


si desea agregar Ctrl + S en el estado del conmutador para que también pueda probar el código siguiente.

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { switch (keyData) { case Keys.Control | Keys.S: // do something... return true; case Keys.Control |Keys.Alt | Keys.S: // do something... return true; case Keys.F2: // do something... return true; case Keys.F3: // do something... return true; case Keys.F4: // do something... return true; default: return base.ProcessCmdKey(ref msg, keyData); } }