Behandeln von Benutzereingaben

In diesem Thema werden die wichtigsten Tastatur- und Mausereignisse beschrieben, die von System.Windows.Forms.Control bereitgestellt werden. Beim Bearbeiten eines Ereignisses sollten Autoren von Steuerelementen die geschützte Methode OnEventName überschreiben, statt einen Delegaten an das Ereignis anzuhängen. Zum Überprüfen der Ereignisse siehe Auslösen von Ereignissen aus einer Komponente.

Hinweis

Wenn einem Ereignis keine Daten zugeordnet sind, wird eine Instanz der Basisklasse EventArgs an die OnEventName-Methode übergeben.

Tastaturereignisse

Die üblichen Tastaturereignisse, die das Steuerelement verarbeiten kann, sind KeyDown, KeyPress und KeyUp.

Veranstaltungsname Zu überschreibende Methode Beschreibung des Ereignisses
KeyDown void OnKeyDown(KeyEventArgs) Wird nur ausgelöst, wenn anfangs eine Taste gedrückt wird.
KeyPress void OnKeyPress

(KeyPressEventArgs)
Wird jedes Mal ausgelöst, wenn eine Taste gedrückt wird. Wenn eine Taste gedrückt gehalten wird, wird in der vom Betriebssystem definierten Wiederholungsrate ein Ereignis vom Typ KeyPress ausgelöst.
KeyUp void OnKeyUp(KeyEventArgs) Wird ausgelöst, wenn eine Taste losgelassen wird.

Hinweis

Das Bearbeiten von Tastatureingaben ist wesentlich komplexer als das Überschreiben der Ereignisse in der obigen Tabelle und würde Rahmen dieses Themas sprengen. Weitere Informationen finden Sie unter Benutzereingaben in Windows Forms.

Mausereignisse

Die Mausereignisse, die das Steuerelement verarbeiten kann, sind MouseDown, MouseEnter, MouseHover, MouseLeave, MouseMove und MouseUp.

Veranstaltungsname Zu überschreibende Methode Beschreibung des Ereignisses
MouseDown void OnMouseDown(MouseEventArgs) Wird ausgelöst, wenn sich der Mauszeiger über dem Steuerelement befindet und eine Maustaste gedrückt wird.
MouseEnter void OnMouseEnter(EventArgs) Wird ausgelöst, wenn der Mauszeiger zunächst auf den Bereich des Steuerelements trifft.
MouseHover void OnMouseHover(EventArgs) Wird ausgelöst, wenn der Mauszeiger über das Steuerelement bewegt wird.
MouseLeave void OnMouseLeave(EventArgs) Wird ausgelöst, wenn der Mauszeiger den Bereich des Steuerelements verlässt.
MouseMove void OnMouseMove(MouseEventArgs) Wird ausgelöst, wenn der Mauszeiger in den Bereich des Steuerelements wechselt.
MouseUp void OnMouseUp(MouseEventArgs) Wird ausgelöst, wenn die Maustaste losgelassen wird, während sich der Mauszeiger über dem Steuerelement befindet oder den Bereich des Steuerelements verlässt.

Das folgende Codefragment veranschaulicht beispielsweise, wie das MouseDown-Ereignis überschrieben wird.

protected override void OnMouseDown(MouseEventArgs e) {
    base.OnMouseDown(e);
    if (!allowUserEdit) {
        return;
    }
    Capture = true;
    dragging = true;
    SetDragValue(new Point(e.X, e.Y));
}
Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
    MyBase.OnMouseDown(e)
    If Not (myAllowUserEdit) Then
        Return
    End If
    Capture = True
    dragging = True
    SetDragValue(New Point(e.X, e.Y))
End Sub

Das folgende Codefragment veranschaulicht beispielsweise, wie das MouseMove-Ereignis überschrieben wird.

protected override void OnMouseMove(MouseEventArgs e) {
    base.OnMouseMove(e);
    if (!allowUserEdit || !dragging) {
        return;
    }
    SetDragValue(new Point(e.X, e.Y));
}
Protected Overrides Sub OnMouseMove(ByVal e As MouseEventArgs)
    MyBase.OnMouseMove(e)
    If (Not myAllowUserEdit Or Not dragging) Then
        Return
    End If
    SetDragValue(New Point(e.X, e.Y))
End Sub

Das folgende Codefragment veranschaulicht beispielsweise, wie das MouseUp-Ereignis überschrieben wird.

protected override void OnMouseUp(MouseEventArgs e) {
    base.OnMouseUp(e);
    if (!allowUserEdit || !dragging) {
        return;
    }
    Capture = false;
    dragging = false;
    value = dragValue;
    OnValueChanged(EventArgs.Empty);
}
Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs)
    MyBase.OnMouseUp(e)
    If (Not myAllowUserEdit Or Not dragging) Then
        Return
    End If
    Capture = False
    dragging = False
    Value = dragValue
    OnValueChanged(EventArgs.Empty)
End Sub

Für den vollständigen Quellencode für das FlashTrackBar-Beispiel siehe Vorgehensweise: Erstellen eines Windows Forms-Steuerelement, das den Fortschritt anzeigt.

Weitere Informationen