Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
A medida que el usuario escribe las teclas en la aplicación, puede supervisar las teclas modificadoras presionadas, como MAYÚS, ALT y CTRL. Cuando se presiona una tecla modificadora en combinación con otras teclas o incluso un clic del mouse, la aplicación puede responder correctamente. Por ejemplo, presionar la tecla S puede hacer que aparezca una "s" en la pantalla. Si se presionan las teclas CTRL+S , en su lugar, es posible que se guarde el documento actual.
Si controla el KeyDown evento, la KeyEventArgs.Modifiers propiedad recibida por el controlador de eventos especifica qué teclas modificadoras se presionan. Además, la KeyEventArgs.KeyData propiedad especifica el carácter que se presionó junto con las teclas modificadoras combinadas con un OR bit a bit.
Si controla el evento o un evento del KeyPress mouse, el controlador de eventos no recibe esta información. Use la ModifierKeys propiedad de la Control clase para detectar un modificador de clave. En cualquier caso, debe realizar un and bit a bit del valor adecuado Keys y el valor que está probando. La Keys enumeración ofrece variaciones de cada tecla modificadora, por lo que es importante que realice la comprobación con el operador AND bit a bit usando el valor correcto.
Por ejemplo, los siguientes valores de clave representan la tecla MAYÚS :
El valor correcto para probar MAYÚS como tecla modificadora es Keys.Shift. Del mismo modo, para probar ctrl y ALT como modificadores, debe usar los Keys.Control valores y Keys.Alt , respectivamente.
Detección de la clave modificadora
Detectar si se presiona una tecla modificadora comparando la propiedad ModifierKeys y el valor de enumeración Keys con un operador de AND a nivel de bits.
En el siguiente ejemplo de código se muestra cómo determinar si se presiona la tecla MAYÚS dentro de los controladores de eventos KeyPress y KeyDown.
// Event only raised when non-modifier key is pressed
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift)
MessageBox.Show("KeyPress " + Keys.Shift);
}
// Event raised as soon as shift is pressed
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift)
MessageBox.Show("KeyDown " + Keys.Shift);
}
' Event only raised when non-modifier key is pressed
Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs)
If ((Control.ModifierKeys And Keys.Shift) = Keys.Shift) Then
MessageBox.Show("KeyPress " & [Enum].GetName(GetType(Keys), Keys.Shift))
End If
End Sub
' Event raised as soon as shift is pressed
Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs)
If ((Control.ModifierKeys And Keys.Shift) = Keys.Shift) Then
MessageBox.Show("KeyPress " & [Enum].GetName(GetType(Keys), Keys.Shift))
End If
End Sub
Consulte también
.NET Desktop feedback