2010-12-14 24 views
9

Estoy tratando de capturar dos pulsaciones de teclas en mi aplicación VB.net, para este ejemplo CTRL + B, el código siguiente no funciona, pero sí para teclas individuales. He intentado configurar keypreview como verdadero, pero esto no tiene ningún efecto.vb.net combinación de teclas

Private Sub main_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles mybase.KeyDown 
      If e.KeyCode = Keys.ControlKey And e.KeyCode = Keys.B Then 
       MsgBox("CTRL + B Pressed !") 
      End If 
     End Sub 
    End Class 

Gracias

Respuesta

16

la tecla de control es una tecla de modificación. Este código prueba para Ctrl + B

e.KeyCode = Keys.B AndAlso e.Modifiers = Keys.Control 

El código de clave es B, pero el modificador es Ctrl.

su fragmento de código, actualización:

Private Sub main_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles mybase.KeyDown 
    If (e.KeyCode = Keys.B AndAlso e.Modifiers = Keys.Control) Then 
     MsgBox("CTRL + B Pressed !") 
    End If 
End Sub 
+1

¡Perfecto, pensó que sería algo simple! Gracias :) – Elliott

1

Si nos fijamos en la documentation for KeyEventArgs, se le nota que la clase expone propiedades de ALT, CTRL y modificadores que le permiten determinar si estas teclas se presionan en Además de la clave de símbolo principal que le interesa.

2

Debe agregar la tecla de control también después del modificador para que funcione correctamente.

Private Sub main_KeyDown(ByVal sender As Object, ByVal e As 
    System.Windows.Forms.KeyEventArgs) Handles mybase.KeyDown 
    If (e.KeyCode = Keys.B AndAlso e.Modifiers.ControlKey = Keys.Control) Then 
     MsgBox("CTRL + B Pressed !") 
    End If 
End Sub 
Cuestiones relacionadas