Gewusst wie: Ermitteln der gedrückten Modifizierertaste

Beim Erstellen einer Anwendung, die über Tastatureingaben gesteuert werden kann, sollten Sie eine Überwachung der Modifizierertasten (z. B. UMSCHALT-, ALT- und STRG-TASTEN) einrichten. Wenn eine Modifizierertaste in Verbindung mit anderen Tasten oder Mausklicks gedrückt wird, kann die Anwendung entsprechend darauf reagieren. Wenn beispielsweise der Buchstabe S gedrückt wird, wird auf dem Bildschirm lediglich ein "s" angezeigt, wenn aber die Tasten STRG+S gedrückt werden, wird das aktuelle Dokument gespeichert. Wenn Sie das KeyDown-Ereignis behandeln, legt die Modifiers-Eigenschaft des vom Ereignishandler empfangenen KeyEventArgs fest, welche Modifizierertasten gedrückt werden. Alternativ legt die KeyData-Eigenschaft des KeyEventArgs das gedrückte Zeichen sowie weitere Modifizierertasten fest, die mit einem bitweisen Operator OR kombiniert werden. Wenn Sie jedoch das KeyPress-Ereignis oder ein Mausereignis behandeln, empfängt der Ereignishandler diese Informationen nicht. In diesem Fall müssen Sie die ModifierKeys-Eigenschaft der Control-Klasse verwenden. Grundsätzlich müssen Sie einen bitweisen Operator AND des entsprechenden Keys-Werts und des getesteten Werts ausführen. Die Keys-Enumeration ermöglicht Varianten der einzelnen Modifizierertasten. Daher ist es wichtig, dass Sie den bitweisen Operator AND mit dem richtigen Wert ausführen. Die UMSCHALTTASTE wird beispielsweise durch Shift, ShiftKey, RShiftKey und LShiftKey dargestellt. Der richtige Wert zum Testen der UMSCHALTTASTE als Modifizierertaste ist Shift. Zum Testen von STRG und ALT als Modifizierertasten sollten Sie dementsprechend den Wert Control bzw. den Wert Alt verwenden.

Tipp

Visual Basic-Programmierer können Tasteninformationen auch über die Keyboard-Eigenschaft aufrufen.

So ermitteln Sie, welche Modifizierertaste gedrückt wurde

  • Verwenden Sie den bitweisen Operator AND mit der ModifierKeys-Eigenschaft und einem Wert der Keys-Enumeration, um zu bestimmen, ob eine bestimmte Modifizierertaste gedrückt wird. Im folgenden Codebeispiel wird veranschaulicht, wie Sie bestimmen, ob die UMSCHALTTASTE innerhalb eines KeyPress-Ereignishandlers gedrückt wird.

    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());
            }
        }
    

Siehe auch

Aufgaben

Gewusst wie: Ermitteln, ob die FESTSTELLTASTE aktiviert ist in Visual Basic

Referenz

Keys

ModifierKeys

Weitere Ressourcen

Tastatureingaben in einer Windows Forms-Anwendung