Uso degli eventi del mouse (Windows Form .NET)
La maggior parte dei programmi Windows Form elabora l'input del mouse gestendo gli eventi del mouse. Questo articolo offre una panoramica degli eventi del mouse, inclusi i dettagli su quando usare ogni evento e i dati forniti per ogni evento. Per altre informazioni sugli eventi in generale, vedere Panoramica degli eventi (Windows Form .NET).
Eventi del mouse
Il modo principale per rispondere all'input del mouse consiste nel gestire gli eventi del mouse. La tabella seguente illustra gli eventi del mouse e descrive quando vengono generati.
Evento del mouse | Descrizione |
---|---|
Click | Questo evento si verifica quando viene rilasciato il pulsante del mouse, in genere prima dell'evento MouseUp . Il gestore di questo evento riceve un argomento di tipo EventArgs. Gestire questo evento quando è necessario determinare solo quando si verifica un clic. |
MouseClick | Questo evento si verifica quando l'utente fa clic sul controllo con il mouse. Il gestore di questo evento riceve un argomento di tipo MouseEventArgs. Gestire questo evento quando è necessario ottenere informazioni sul mouse quando si verifica un clic. |
DoubleClick | Questo evento si verifica quando si fa doppio clic sul controllo. Il gestore di questo evento riceve un argomento di tipo EventArgs. Gestire questo evento quando è necessario determinare solo quando si verifica un doppio clic. |
MouseDoubleClick | Questo evento si verifica quando l'utente fa doppio clic sul controllo con il mouse. Il gestore di questo evento riceve un argomento di tipo MouseEventArgs. Gestire questo evento quando è necessario ottenere informazioni sul mouse quando si verifica un doppio clic. |
MouseDown | Questo evento si verifica quando il puntatore del mouse si trova sul controllo e l'utente preme un pulsante del mouse. Il gestore di questo evento riceve un argomento di tipo MouseEventArgs. |
MouseEnter | Questo evento si verifica quando il puntatore del mouse entra nel bordo o nell'area client del controllo, a seconda del tipo di controllo. Il gestore di questo evento riceve un argomento di tipo EventArgs. |
MouseHover | Questo evento si verifica quando il puntatore del mouse si arresta e si posiziona sul controllo. Il gestore di questo evento riceve un argomento di tipo EventArgs. |
MouseLeave | Questo evento si verifica quando il puntatore del mouse lascia il bordo o l'area client del controllo, a seconda del tipo del controllo. Il gestore di questo evento riceve un argomento di tipo EventArgs. |
MouseMove | Questo evento si verifica quando il puntatore del mouse si sposta mentre si trova su un controllo. Il gestore di questo evento riceve un argomento di tipo MouseEventArgs. |
MouseUp | Questo evento si verifica quando il puntatore del mouse si trova sul controllo e l'utente rilascia un pulsante del mouse. Il gestore di questo evento riceve un argomento di tipo MouseEventArgs. |
MouseWheel | Questo evento si verifica quando l'utente ruota la rotellina del mouse mentre il controllo ha lo stato attivo. Il gestore di questo evento riceve un argomento di tipo MouseEventArgs. È possibile utilizzare la Delta proprietà di MouseEventArgs per determinare la distanza di scorrimento del mouse. |
Informazioni sul mouse
Un oggetto MouseEventArgs viene inviato ai gestori degli eventi del mouse correlati alla pressione di un pulsante e alla registrazione dei movimenti del mouse. MouseEventArgs fornisce informazioni sullo stato corrente del mouse, fra cui la posizione del puntatore nelle coordinate del client, i pulsanti del mouse premuti e se la rotellina del mouse è stata fatta scorrere. Diversi eventi del mouse, ad esempio quelli generati quando il puntatore del mouse è entrato o ha lasciato i limiti di un controllo, inviare un EventArgs oggetto al gestore eventi senza ulteriori informazioni.
Se si desidera conoscere lo stato corrente dei pulsanti del mouse o la posizione del puntatore ed evitare la gestione di un evento del mouse, è anche possibile usare le proprietà MouseButtons e MousePosition della classe Control. MouseButtons restituisce informazioni sui pulsanti del mouse attualmente premuti. MousePosition restituisce le coordinate dello schermo del puntatore del mouse e coincide con il valore restituito dalla proprietà Position.
Conversione tra coordinate dello schermo e del client
Poiché alcune informazioni sulla posizione del mouse sono espresse con le coordinate del client e altre con le coordinate dello schermo, può essere necessario eseguire una conversione da un sistema di coordinate all'altro. Questa operazione può essere eseguita facilmente usando i metodi PointToClient e PointToScreen disponibili nella classe Control.
Comportamento dell'evento Click standard
Se si vogliono gestire gli eventi Click del mouse nell'ordine corretto, è necessario conoscere l'ordine in cui gli eventi Click vengono generati nei controlli Windows Form. Tutti i controlli Windows Form generano eventi click nello stesso ordine in cui viene premuto e rilasciato qualsiasi pulsante del mouse supportato, tranne dove indicato nell'elenco seguente per i singoli controlli. L'ordine degli eventi generati per un singolo clic del pulsante del mouse è il seguente:
- EventoMouseDown .
- EventoClick .
- EventoMouseClick .
- EventoMouseUp .
Di seguito è riportato l'ordine degli eventi generati per un doppio clic del pulsante del mouse:
EventoMouseDown .
EventoClick .
EventoMouseClick .
EventoMouseUp .
EventoMouseDown .
EventoDoubleClick .
Questo può variare, a seconda che il controllo in questione abbia il StandardDoubleClick bit di stile impostato su
true
. Per altre informazioni su come impostare un ControlStyles bit, vedere il SetStyle metodo .EventoMouseDoubleClick .
EventoMouseUp .
Singoli controlli
I controlli seguenti non sono conformi al comportamento standard dell'evento click del mouse:
-
Nota
Per il controllo ComboBox, il comportamento dell'evento descritto di seguito si verifica se l'utente fa clic sul campo di modifica, sul pulsante o su una voce dell'elenco.
- Fare clic con il pulsante sinistro del mouse: Click, MouseClick
- Fare clic con il pulsante destro del mouse: nessun evento click generato
- Fare doppio clic con il pulsante sinistro del mouse: Click, MouseClick, Click, MouseClick
- Doppio clic con il pulsante destro del mouse: nessun evento click generato
Controlli TextBox, RichTextBox, ListBox, MaskedTextBox e CheckedListBox
Nota
Il comportamento dell'evento descritto di seguito si verifica se l'utente fa clic in un punto qualsiasi di tali controlli.
- Fare clic con il pulsante sinistro del mouse: Click, MouseClick
- Fare clic con il pulsante destro del mouse: nessun evento click generato
- Fare doppio clic con il pulsante sinistro del mouse: Click, MouseClick, DoubleClick, MouseDoubleClick
- Doppio clic con il pulsante destro del mouse: nessun evento click generato
Controllo ListView
Nota
Il comportamento dell'evento descritto di seguito si verifica solo quando l'utente fa clic sugli elementi nel controllo ListView. Per i clic in altri punti del controllo non verranno generati eventi. Oltre agli eventi descritti di seguito esistono gli eventi BeforeLabelEdit e AfterLabelEdit, rilevanti se si desidera usare la convalida con il controllo ListView.
- Fare clic con il pulsante sinistro del mouse: Click, MouseClick
- Fare clic con il pulsante destro del mouse: Click, MouseClick
- Fare doppio clic con il pulsante sinistro del mouse: Click, MouseClick, DoubleClick, MouseDoubleClick
- Fare doppio clic con il pulsante destro del mouse: Click, MouseClick; DoubleClick, MouseDoubleClick
Controllo TreeView
Nota
Il comportamento dell'evento descritto di seguito si verifica solo quando l'utente fa clic sugli elementi stessi o a destra degli elementi nel controllo TreeView. Per i clic in altri punti del controllo non verranno generati eventi. Oltre agli eventi descritti di seguito, esistono gli eventi BeforeCheck, BeforeSelect, BeforeLabelEdit, AfterSelect, AfterCheck e AfterLabelEdit, rilevanti se si desidera usare la convalida con il controllo TreeView.
- Fare clic con il pulsante sinistro del mouse: Click, MouseClick
- Fare clic con il pulsante destro del mouse: Click, MouseClick
- Fare doppio clic con il pulsante sinistro del mouse: Click, MouseClick, DoubleClick, MouseDoubleClick
- Fare doppio clic con il pulsante destro del mouse: Click, MouseClick; DoubleClick, MouseDoubleClick
Disegno del comportamento di attivazione/disattivazione dei controlli
I controlli di attivazione/disattivazione, quali quelli che derivano dalla classe ButtonBase, presentano il seguente comportamento di disegno distintivo in combinazione con eventi Click del mouse:
L'utente preme il pulsante del mouse.
Il controllo viene disegnato nello stato premuto.
Viene generato l'evento MouseDown.
L'utente rilascia il pulsante del mouse.
Il controllo viene disegnato nello stato generato.
Viene generato l'evento Click.
Viene generato l'evento MouseClick.
Viene generato l'evento MouseUp.
Nota
Se l'utente sposta il puntatore all'esterno del controllo di attivazione/disattivazione mentre il pulsante del mouse è premuto, ad esempio spostando il mouse dal controllo Button mentre il pulsante è premuto, il controllo di attivazione/disattivazione viene disegnato nello stato generato e si verifica solo l'evento MouseUp. In tale situazione l'evento Click o MouseClick non si verificherà.
Vedi anche
.NET Desktop feedback