2010-03-19 13 views

Respuesta

9

conjunto de propiedades UseMnemonic del botón para verdadero y añadir un símbolo de unión (&) justo antes de la carta en la propiedad Text del botón quiero usar para la tecla de acceso rápido.

El usuario presionar Alt + para activar la tecla de acceso directo.

15

Anular Formulario ProcessCmdKey. Si encuentra una pulsación de tecla que le guste, llame al mismo método que el botón.

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == (Keys.Control | Keys.X)) 
    { 
     DoSomething(); 
     return true; 
    } 
    return base.ProcessCmdKey(ref msg, keyData); 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    DoSomething(); 
} 

private void DoSomething() 
{ 
    MessageBox.Show("hi!"); 
} 

EDITAR: método de Jay es mejor si se puede encontrar una tecla de acceso apropiado.

0

creo que esto es lo que quiere:

private void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Enter) 
     { 
      //Do whatever you want here... 
     } 
    } 

por supuesto se puede cambiar Keys.Enter a la tecla que desea.

1

Además, existen propiedades AcceptButton y CancelButton en todas las formas. Si va a restringir el uso de teclas rápidas para ingresar y escapar de los botones, que a su vez deben invocar ciertos botones, le recomiendo que considere el uso de estas propiedades.

6

Aplicación de Windows y tecla de método abreviado son sinónimos. La gente prefiere usar teclas de método abreviado para una actividad más rápida. Suponga que está en un cuadro de texto y desea presionar F5 para volver a cargar el formulario. No desea mover el cursor del mouse. Entonces, lo que harás es agregar el evento "Key Down" al cuadro de texto. Pero, si está en un cuadro de texto diferente o en un botón, eso no funcionará. Por lo tanto, agregará el evento "Key Down" a su formulario.

Pero necesita habilitar una propiedad para que funcione correctamente y ese es el truco.

private void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.F5) 
    { 
     btnRefresh_Click(null, null); 
    } 
} 

Pero oro truco es, en la ventana de propiedades del formulario hacer los siguientes cambios:

KeyPreview = True 

disfrutar de la programación.

-1

Aunque esta publicación es súper antigua aquí es una forma más sencilla de hacerlo, el código es bastante pobre pero hace el trabajo muy bien.

 private void Form1_KeyDown(object sender, KeyEventArgs e) 
     { 
     if (e.KeyCode == Keys.Enter) 
     { 

      button1.PerformClick(); 

     } 
+0

No creo que se hace el trabajo, porque esto no se compilará . –

0
this.KeyDown += new KeyEventHandler(Form1_KeyDown); 

void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
if (e.Alt && e.KeyCode == Keys.W) 
    { 
    //do something 
    } 
} 
0

Sobre la base de la respuesta de Micheal aquí es una versión más elegante si no va a usar las teclas combinadas:

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