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);
}
}