Vorgehensweise: Bestimmen, welche Zusatztaste gedrückt wurde

Wenn Sie eine Anwendung erstellen, die die Tastenanschläge des Benutzers akzeptiert, möchten Sie möglicherweise auch Zusatztasten wie UMSCHALT-, ALT- und STRG-Tasten überwachen. Wenn eine Zusatztaste in Kombination mit anderen Tasten oder sogar einem Mausklick gedrückt wird, kann die Anwendung entsprechend reagieren. Wenn beispielsweise der Buchstabe S gedrückt wird, kann dies einfach dazu führen, dass auf dem Bildschirm ein „s" angezeigt wird, aber wenn die Tasten STRG+S gedrückt werden, kann das aktuelle Dokument gespeichert werden. Wenn Sie das KeyDown-Ereignis verarbeiten, gibt die vom Ereignishandler empfangene Modifiers-Eigenschaft der KeyEventArgs an, welche Zusatztasten gedrückt werden. Außerdem gibt die KeyData-Eigenschaft von KeyEventArgs das Zeichen an, das zusammen mit allen beliebigen Zusatztasten in Kombination mit einem bitweisen OR gedrückt wurde. Wenn Sie jedoch das KeyPress-Ereignis oder ein Mausereignis verarbeiten, empfängt der Ereignishandler diese Informationen nicht. In diesem Fall können Sie die ModifierKeys-Eigenschaft der Control-Klasse verwenden. In beiden Fällen müssen Sie ein bitweises AND für den entsprechenden Keys-Wert und den getesteten Wert ausführen. Die Keys-Enumeration bietet Variationen der einzelnen Zusatztasten, weshalb es wichtig ist, dass Sie den bitweisen AND-Vorgang mit dem korrekten Wert durchführen. Die UMSCHALT-Taste wird beispielsweise durch Shift, ShiftKey, RShiftKeyund LShiftKey repräsentiert. Der richtige Wert zum Testen der UMSCHALT-Taste wird als Modifizierertaste dargestellt.Shift Wenn Sie STRG und ALT als Modifizierer testen, sollten Sie auf die gleiche Weise die Werte Control bzw. Alt verwenden.

Hinweis

Visual Basic-Programmierer können auch über die Keyboard-Eigenschaft auf wichtige Informationen zugreifen

Bestimmen, welche Zusatztaste gedrückt wurde

  • Verwenden Sie den bitweisen AND-Operator 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 bestimmt wird, ob die SHIFT-Taste in einemKeyPress-Ereignishandler gedrückt wird.

    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
    

Weitere Informationen