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
.NET Desktop feedback