2011-11-30 15 views
5

Estoy usando Visual Studio 2010 para crear una aplicación C# visual, y quiero incluir algunas opciones en las preferencias de mi aplicación para la personalización de atajos de teclado usando algún tipo de entrada de cuadro de texto. Entiendo cómo registrar la entrada del teclado y cómo guardarlo en la configuración de la aplicación del usuario, pero no puedo encontrar ningún control de entrada que tenga esta funcionalidad.Creando una entrada para un atajo de teclado personalizable

I.e. algo como esto:

enter image description here

Pero el uso de formas de las ventanas (Nota: Lo anterior es de Divvy para OS X desde la tienda de aplicaciones).

¿Hay alguna función incorporada para manejar esto? ¿Hay alguna buena biblioteca o entrada personalizada que pueda usar?

De lo contrario, ¿alguna sugerencia sobre cómo implementar algo como esto?

Solución:

Usando la respuesta de Bas B y alguna otra lógica:

private void fShortcut_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode != Keys.Back) 
    { 
     Keys modifierKeys = e.Modifiers; 
     Keys pressedKey = e.KeyData^modifierKeys; //remove modifier keys 

     if (modifierKeys != Keys.None && pressedKey != Keys.None) 
     { 
      //do stuff with pressed and modifier keys 
      var converter = new KeysConverter(); 
      fShortcut.Text = converter.ConvertToString(e.KeyData); 
      //At this point, we know a one or more modifiers and another key were pressed 
      //modifierKeys contains the modifiers 
      //pressedKey contains the other pressed key 
      //Do stuff with results here 
     } 
    } 
    else 
    { 
     e.Handled = false; 
     e.SuppressKeyPress = true; 

     fShortcut.Text = ""; 
    } 
} 

Lo anterior es una forma de saber cuando una combinación de acceso directo válida se introduce mediante la comprobación de si las dos teclas modificadoras , y se presiona otra tecla.

+0

¿Está buscando métodos abreviados de teclado para VS2010 o para su aplicación? –

+0

Para mi aplicación – WilHall

Respuesta

5

que podría tener el usuario introduzca el atajo preferido en un cuadro de texto, a continuación, controlar el evento KeyDown, por ejemplo:

private void textBox1_KeyDown(object sender, KeyEventArgs e) 
    { 
     Keys modifierKeys = e.Modifiers; 

     Keys pressedKey = e.KeyData^modifierKeys; //remove modifier keys 

     //do stuff with pressed and modifier keys 
   var converter = new KeysConverter(); 
     textBox1.Text = converter.ConvertToString(e.KeyData); 
} 

Editar: Se ha actualizado para incluir la respuesta de Stecya.

+0

Esto funcionó a la perfección. Usé esto, junto con otra lógica, para hacer el trabajo. Actualizaré la pregunta con la solución final. – WilHall

Cuestiones relacionadas