Procedimiento para determinar qué tecla modificadora se ha presionado
Al crear una aplicación que acepta las pulsaciones de teclas del usuario, es posible que también quiera supervisar las teclas modificadoras, como las teclas 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 correctamente. Por ejemplo, si se presiona la letra S, esto puede hacer que aparezca una "s" en la pantalla, pero si se presionan las teclas CTRL+S, se puede guardar el documento actual. Si controla el evento, la propiedad del objeto recibido por el controlador de eventos KeyDown Modifiers especifica qué teclas KeyEventArgs modificadoras se presionan. Como alternativa, la propiedad de especifica el carácter que se presionó, así como cualquier tecla modificadora KeyData combinada con un OR bit a KeyEventArgs bit. Sin embargo, si está controlando el evento o un evento del mouse, el controlador KeyPress de eventos no recibe esta información. En este caso, debe usar la ModifierKeys propiedad 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 ofrece variaciones de cada tecla modificadora, por lo que es importante que realice la operación AND bit a Keys bit con el valor correcto. Por ejemplo, la tecla MAYÚS se representa mediante , y el valor correcto para probar Shift MAYÚS como una tecla ShiftKey RShiftKey LShiftKey modificadora es Shift . Del mismo modo, para probar CTRL y ALT como modificadores, debe usar los valores Control y Alt, respectivamente.
Nota
Visual Basic programadores también pueden acceder a la información clave a través de la Keyboard propiedad
Para determinar qué tecla modificadora se presionó
Use el operador bit a bit con la propiedad y un valor de la enumeración para determinar si se presiona una
ANDModifierKeys tecla Keys modificadora determinada. En el ejemplo de código siguiente se muestra cómo determinar si se presiona la tecla MAYÚS dentro de un KeyPress controlador de eventos.private: void textBox1_KeyPress(Object^ sender, KeyPressEventArgs^ e) { if ((Control::ModifierKeys & Keys::Shift) == Keys::Shift) { MessageBox::Show("Pressed " + Keys::Shift.ToString()); } }public void TextBox1_KeyPress(object sender, KeyPressEventArgs e) { if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift) { MessageBox.Show("Pressed " + Keys.Shift); } }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