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:

  1. EventoMouseDown .

  2. EventoClick .

  3. EventoMouseClick .

  4. EventoMouseUp .

Di seguito è riportato l'ordine degli eventi generati per un doppio clic del pulsante del mouse:

  1. EventoMouseDown .

  2. EventoClick .

  3. EventoMouseClick .

  4. EventoMouseUp .

  5. EventoMouseDown .

  6. 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 .

  7. EventoMouseDoubleClick .

  8. 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:

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:

  1. L'utente preme il pulsante del mouse.

  2. Il controllo viene disegnato nello stato premuto.

  3. Viene generato l'evento MouseDown.

  4. L'utente rilascia il pulsante del mouse.

  5. Il controllo viene disegnato nello stato generato.

  6. Viene generato l'evento Click.

  7. Viene generato l'evento MouseClick.

  8. 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