Dela via


Hantera användarindata

I det här avsnittet beskrivs de viktigaste tangentbords- och mushändelserna som tillhandahålls av System.Windows.Forms.Control. När du hanterar en händelse bör kontrollförfattare åsidosätta den skyddade metoden OnEventName i stället för att koppla ett ombud till händelsen. För en granskning av händelser, se Utlösande av händelser från en komponent.

Anteckning

Om det inte finns några data som är associerade med en händelse skickas en instans av basklassen EventArgs som ett argument till metoden OnEventName.

Tangentbordshändelser

De vanliga tangentbordshändelserna som kontrollen kan hantera är KeyDown, KeyPressoch KeyUp.

Händelsenamn Metod för åsidosättning Beskrivning av händelse
KeyDown void OnKeyDown(KeyEventArgs) Utlöst endast när en tangent trycks ned första gången.
KeyPress void OnKeyPress

(KeyPressEventArgs)
Upphöjt varje gång en nyckel trycks in. Om en nyckel hålls nere genereras en KeyPress händelse med den upprepningsfrekvens som definieras av operativsystemet.
KeyUp void OnKeyUp(KeyEventArgs) Utlöses när en nyckel släpps.

Anteckning

Att hantera tangentbordsindata är betydligt mer komplext än att åsidosätta händelserna i föregående tabell och ligger utanför omfånget för det här ämnet. Mer information finns i Användarindata i Windows Forms.

Mushändelser

Mushändelserna som kontrollen kan hantera är MouseDown, MouseEnter, MouseHover, MouseLeave, MouseMoveoch MouseUp.

Händelsenamn Metod för åsidosättning Beskrivning av händelse
MouseDown void OnMouseDown(MouseEventArgs) Utlöses när musknappen trycks in medan pekaren är över kontrollen.
MouseEnter void OnMouseEnter(EventArgs) Utlöses när pekaren först kommer in i kontrollens region.
MouseHover void OnMouseHover(EventArgs) Upphöjt när pekaren hovrar över kontrollen.
MouseLeave void OnMouseLeave(EventArgs) Upphöjt när pekaren lämnar kontrollens region.
MouseMove void OnMouseMove(MouseEventArgs) Utlöses när pekaren flyttas inom kontrollens område.
MouseUp void OnMouseUp(MouseEventArgs) Upphöjt när musknappen släpps medan pekaren är över kontrollen eller pekaren lämnar kontrollens region.

Följande kodfragment visar ett exempel på att åsidosätta händelsen MouseDown.

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

Följande kodfragment visar ett exempel på att åsidosätta händelsen MouseMove.

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

Följande kodfragment visar ett exempel på att åsidosätta händelsen MouseUp.

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

Den fullständiga källkoden för FlashTrackBar-exemplet finns i Så här: Skapa en Windows Forms-kontroll som visar framsteg.

Se även