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

Importante

La documentazione di Desktop Guide per .NET 7 e .NET 6 è in fase di costruzione.

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:

  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 .

Singoli controlli

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