Condividi tramite


Gestione dell'input dell'utente

In questo argomento vengono descritti gli eventi principali della tastiera e del mouse forniti da System.Windows.Forms.Control. Quando si gestisce un evento, gli autori dei controlli devono eseguire l'override del metodo protetto OnEventName anziché associare un delegato all'evento. Per una panoramica degli eventi, vedere Generazione di eventi da un componente.

Nota

Se non sono presenti dati associati a un evento, un'istanza della classe EventArgs di base viene passata come argomento al Onmetodo EventName .

Eventi della tastiera

Gli eventi di tastiera comuni che il controllo può gestire sono KeyDown, KeyPresse KeyUp.

Nome evento Metodo di cui eseguire l'override Descrizione dell'evento
KeyDown void OnKeyDown(KeyEventArgs) Generato solo quando un tasto viene premuto inizialmente.
KeyPress void OnKeyPress

(KeyPressEventArgs)
Generato ogni volta che un tasto viene premuto. Se si tiene premuta una chiave, viene generato un KeyPress evento alla frequenza di ripetizione definita dal sistema operativo.
KeyUp void OnKeyUp(KeyEventArgs) Viene generato quando un tasto viene rilasciato.

Nota

La gestione dell'input da tastiera è notevolmente più complessa dell'override degli eventi nella tabella precedente ed esula dall'ambito di questo argomento. Per altre informazioni, vedere Input dell'utente in Windows Forms.

Eventi del mouse

Gli eventi del mouse che il controllo può gestire sono MouseDown, , MouseLeaveMouseEnterMouseHover, MouseMove, e MouseUp.

Nome evento Metodo di cui eseguire l'override Descrizione dell'evento
MouseDown void OnMouseDown(MouseEventArgs) Viene generato quando il pulsante del mouse viene premuto mentre il puntatore si trova sopra il controllo.
MouseEnter void OnMouseEnter(EventArgs) Viene generato quando il puntatore del mouse entra nell'area del controllo.
MouseHover void OnMouseHover(EventArgs) Viene generato quando il puntatore è posizionato sul controllo.
MouseLeave void OnMouseLeave(EventArgs) Viene generato quando il puntatore esce dall'area del controllo.
MouseMove void OnMouseMove(MouseEventArgs) Viene generato quando il puntatore si sposta nell'area del controllo.
MouseUp void OnMouseUp(MouseEventArgs) Viene generato quando il pulsante del mouse viene rilasciato mentre il puntatore si trova sul controllo o il puntatore esce dall'area del controllo.

Il frammento di codice seguente mostra un esempio di override dell'evento 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

Il frammento di codice seguente mostra un esempio di override dell'evento 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

Il frammento di codice seguente mostra un esempio di override dell'evento 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

Per il codice sorgente completo dell'esempio FlashTrackBar, vedere Procedura: Creare un controllo di Windows Forms che visualizzi lo stato di avanzamento.

Vedi anche