Eventi mouse in Windows Form
Quando si gestisce l'input del mouse, in genere si vogliono conoscere la posizione del puntatore del mouse e lo stato dei pulsanti. Questo argomento descrive in dettaglio come reperire tali informazioni da eventi del mouse e illustra l'ordine in cui gli eventi Click del mouse vengono generati nei controlli Windows Form. Per un elenco e una descrizione di tutti gli eventi del mouse, vedere Funzionamento dell'input del mouse in Windows Form. Vedere anche Panoramica dei gestori eventi (Windows Form) e Panoramica degli eventi (Windows Form).
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. Numerosi eventi del mouse, ad esempio quelli che notificano semplicemente il momento in cui il puntatore del mouse entra o esce dai limiti di un controllo, inviano un oggetto EventArgs al gestore eventi senza altre 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 quando viene premuto e rilasciato un pulsante del mouse (indipendentemente dal pulsante), fatta eccezione per i singoli controlli segnalati nell'elenco seguente. 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 .
Per un esempio di codice che illustra l'ordine degli eventi di clic del mouse, vedere Procedura: Gestire eventi di input utente in Windows Form Controlli.
Controlli autonomi
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.
Clic con pulsante sinistro: Click, MouseClick
Clic con pulsante destro: nessun evento Click generato
Doppio clic con pulsante sinistro: Click, MouseClick; Click, MouseClick
Doppio clic con pulsante destro: 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.
Clic con pulsante sinistro: Click, MouseClick
Clic con pulsante destro: nessun evento Click generato
Doppio clic con pulsante sinistro: Click, MouseClick, DoubleClick, MouseDoubleClick
Doppio clic con pulsante destro: 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.
Clic con pulsante sinistro: Click, MouseClick
Clic con pulsante destro: Click, MouseClick
Doppio clic con pulsante sinistro: Click, MouseClick; DoubleClick, MouseDoubleClick
Doppio clic con pulsante destro: 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.
Clic con pulsante sinistro: Click, MouseClick
Clic con pulsante destro: Click, MouseClick
Doppio clic con pulsante sinistro: Click, MouseClick; DoubleClick, MouseDoubleClick
Doppio clic con pulsante destro: 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