Eventi mouse in Windows Form
Quando si gestisce l'input del mouse, in genere si desidera conoscere la posizione del puntatore del mouse e lo stato dei pulsanti. In questo argomento vengono fornite informazioni sul reperimento di tali informazioni da eventi mouse e viene spiegato l'ordine in cui gli eventi click del mouse vengono generati in controlli Windows Form. Per un elenco e la descrizione di tutti gli eventi mouse, vedere Input del mouse in Windows Form. Per ulteriori informazioni, vedere Cenni preliminari sugli eventi (Windows Form) e Cenni preliminari sui gestori eventi (Windows Form) e Cenni preliminari sui gestori eventi (Windows Form) e Cenni preliminari sugli eventi (Windows Form) e Cenni preliminari sui gestori eventi (Windows Form) e Cenni preliminari sugli eventi (Windows Form) e Cenni preliminari sui gestori eventi (Windows Form) e Cenni preliminari sugli eventi (Windows Form).
Informazioni sul mouse
La classe MouseEventArgs viene inviata ai gestori degli eventi 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 mouse, ad esempio quelli che notificano semplicemente il momento in cui il puntatore del mouse entra o esce dai limiti di un controllo, inviano la classe EventArgs 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 mouse, è inoltre possibile utilizzare le proprietà MouseButtons e MousePosition della classe Control. MouseButtons restituisce informazioni sui pulsanti del mouse correntemente premuti. La proprietà 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, potrebbe essere necessario eseguire una conversione da un sistema di coordinate all'altro. Tale operazione può essere eseguita utilizzando i metodi PointToClient e PointToScreen disponibili nella classe Control.
Comportamento dell'evento click standard
Se si desidera 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 si fa clic con un pulsante del mouse, 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:
Evento MouseDown.
Evento Click.
Evento MouseClick.
Evento MouseUp.
L'ordine degli eventi generati per un doppio clic del pulsante del mouse è il seguente:
Evento MouseDown.
Evento Click.
Evento MouseClick.
Evento MouseUp.
Evento MouseDown.
Evento DoubleClick. Può variare se il controllo in questione ha il bit di stile StandardDoubleClick impostato su true. Per ulteriori informazioni sulla modalità di impostazione di un bit ControlStyles, vedere il metodo SetStyle.
Evento MouseDoubleClick.
Evento MouseUp.
Per un esempio di codice che illustri l'ordine degli eventi click del mouse, vedere Procedura: gestire eventi di input degli utenti nei controlli Windows Form.
Controlli autonomi
I controlli seguenti non sono conformi al comportamento standard dell'evento click del mouse:
Controlli Button, CheckBox, ComboBox e RadioButton
Nota
Relativamente al controllo ComboBox, il comportamento dell'evento descritto di seguito si verifica se viene fatto clic sul campo di modifica, sul pulsante o su una voce dell'elenco.
Clic con il pulsante sinistro: Click, MouseClick
Clic con il pulsante destro: nessun evento click generato
Doppio clic con il pulsante sinistro: Click, MouseClick; Click, MouseClick
Doppio clic con il pulsante destro: nessun evento click generato
Controlli TextBox, RichTextBox, ListBox, MaskedTextBox e CheckedListBox
Nota
Il comportamento dell'evento descritto di seguito si verifica se viene fatto clic in un punto qualsiasi di tali controlli.
Clic con il pulsante sinistro: Click, MouseClick
Clic con il pulsante destro: nessun evento click generato
Doppio clic con il pulsante sinistro: Click, MouseClick, DoubleClick, MouseDoubleClick
Doppio clic con il pulsante destro: nessun evento click generato
Controllo ListView
Nota
Il comportamento dell'evento descritto in seguito si verifica solo quando l'utente fa clic sugli elementi nel controllo ListView. Se si fa clic in altri punti del controllo, non verranno generati eventi. Oltre agli eventi descritti in seguito, esistono gli eventi BeforeLabelEdit e AfterLabelEdit, rilevanti se si desidera utilizzare la convalida con il controllo ListView.
Clic con il pulsante sinistro: Click, MouseClick
Clic con il pulsante destro: Click, MouseClick
Doppio clic con il pulsante sinistro: Click, MouseClick; DoubleClick, MouseDoubleClick
Doppio clic con il pulsante destro: Click, MouseClick; DoubleClick, MouseDoubleClick
Controllo TreeView
Nota
Il comportamento dell'evento descritto in seguito si verifica solo quando l'utente fa clic sugli elementi stessi o a destra degli elementi nel controllo TreeView. Se si fa clic in altri punti del controllo, non verranno generati eventi. Oltre agli eventi descritti in seguito, esistono gli eventi BeforeCheck, BeforeSelect, BeforeLabelEdit, AfterSelect, AfterCheck e AfterLabelEdit, rilevanti se si desidera utilizzare la convalida con il controllo TreeView.
Clic con il pulsante sinistro: Click, MouseClick
Clic con il pulsante destro: Click, MouseClick
Doppio clic con il pulsante sinistro: Click, MouseClick; DoubleClick, MouseDoubleClick
Doppio clic con il pulsante destro: Click, MouseClick; DoubleClick, MouseDoubleClick
Comportamento del disegno di controlli di attivazione/disattivazione
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 rilasciato e si verifica solo l'evento MouseUp. In tale situazione l'evento Click o MouseClick non si verificherà.