Compartir a través de


Cómo: Determinar qué tecla modificadora se presionó

Cuando cree una aplicación que acepte pulsaciones de teclas por parte del usuario, es posible que desee supervisar también teclas modificadoras tales como Mayús, Alt y Ctrl. Cuando se presiona una tecla modificadora en combinación con otras teclas, o con clics del mouse, la aplicación puede responder adecuadamente. Por ejemplo, si se presiona la letra S, esto puede hacer que simplemente aparezca una "s" en la pantalla, pero si presiona las teclas CTRL+S, se puede guardar el documento actual. Si controla el evento KeyDown, la propiedad Modifiers de KeyEventArgs recibida por el controlador de eventos especifica qué teclas modificadoras se han presionado. De forma alternativa, la propiedad KeyData de KeyEventArgs especifica el carácter que se presionó, así como cualquier tecla modificadora en combinación con una operación OR bit a bit. Sin embargo, si está controlando el evento KeyPress o un evento del mouse, el controlador de eventos no recibe esta información. En este caso, debe utilizar la propiedad ModifierKeys de la clase Control. En cualquier caso, debe realizar una operación AND bit a bit del valor Keys adecuado y el valor que está probando. La enumeración Keys proporciona variaciones de cada tecla modificadora, por lo que es importante que realice una operación AND bit a bit con el valor correcto. Por ejemplo, Shift, ShiftKey, RShiftKey y LShiftKey representan la tecla MAYÚS y el valor correcto para probar la tecla MAYÚS como tecla modificadora es Shift. De forma similar, para probar las teclas CTLR y ALT como modificadores debería utilizar los valores Control y Alt respectivamente.

Nota

Los programadores de Visual Basic también pueden obtener acceso a la información sobre las teclas a través de la propiedad Keyboard.

Para determinar qué tecla modificadora se presionó

  • Utilice el operador AND bit a bit con la propiedad ModifierKeys y un valor de la enumeración Keys para determinar si se presiona una tecla modificadora determinada. El ejemplo de código siguiente muestra cómo determinar si la tecla MAYÚS se presiona dentro de un controlador de eventos KeyPress.

    Public Sub TextBox1_KeyPress(ByVal sender As Object, _
        ByVal e As KeyPressEventArgs) Handles TextBox1.KeyPress
    
        If ((Control.ModifierKeys And Keys.Shift) = Keys.Shift) Then
            MsgBox("Pressed " + Keys.Shift.ToString())
        End If
    End Sub
    
            public void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
            {
                if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift)
                {
                    MessageBox.Show("Pressed " + Keys.Shift);
                }
            }
    
    private:
        void textBox1_KeyPress(Object^ sender, KeyPressEventArgs^ e)
        {
            if ((Control::ModifierKeys & Keys::Shift) == Keys::Shift)
            {
                MessageBox::Show("Pressed " + Keys::Shift.ToString());
            }
        }
    

Vea también

Tareas

Cómo: Determinar si CapsLock está activado en Visual Basic

Referencia

Keys

ModifierKeys

Otros recursos

Entradas mediante teclado en una aplicación de Windows Forms