Input del mouse in Windows Form

La ricezione e la gestione dell'input del mouse sono una parte importante di ogni applicazione Windows. È possibile gestire gli eventi del mouse per eseguire un'azione nell'applicazione o usare le informazioni sulla posizione del mouse per eseguire hit testing o altre azioni. Inoltre, è possibile modificare il modo in cui i controlli nell'applicazione gestiscono l'input del mouse. In questo argomento vengono descritti in dettaglio questi eventi del mouse e come ottenere e modificare le impostazioni di sistema per il mouse. Per altre informazioni sui dati forniti con gli eventi del mouse e sull'ordine in cui vengono generati gli eventi di clic del mouse, vedere Eventi del mouse in Windows Form.

Posizione del mouse e hit testing

Quando l'utente sposta il mouse, il sistema operativo sposta il puntatore del mouse. Il puntatore del mouse contiene un singolo pixel, denominato hot spot, che il sistema operativo tiene traccia e riconosce come posizione del puntatore. Quando l'utente sposta il mouse o preme un pulsante del mouse, l'oggetto Control che contiene HotSpot genera l'evento del mouse appropriato. È possibile ottenere la posizione corrente del mouse con la Location proprietà di MouseEventArgs quando si gestisce un evento del mouse o utilizzando la Position proprietà della Cursor classe . Successivamente, è possibile usare le informazioni sulla posizione del mouse per eseguire il hit testing e quindi eseguire un'azione in base alla posizione del mouse. La funzionalità di hit testing è incorporata in diversi controlli in Windows Form, ad esempio i ListViewcontrolli , TreeViewMonthCalendar e DataGridView . Usato con l'evento del mouse appropriato, MouseHover ad esempio, l'hit testing è molto utile per determinare quando l'applicazione deve eseguire un'azione specifica.

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.

Modifica dell'input del mouse e rilevamento dei Impostazioni di sistema

È possibile rilevare e modificare il modo in cui un controllo gestisce l'input del mouse derivando dal controllo e utilizzando i GetStyle metodi e SetStyle . Il SetStyle metodo accetta una combinazione bit per bit di ControlStyles valori per determinare se il controllo avrà un comportamento standard di clic o doppio clic o se il controllo gestirà la propria elaborazione del mouse. Inoltre, la SystemInformation classe include proprietà che descrivono le funzionalità del mouse e specificano il modo in cui il mouse interagisce con il sistema operativo. Nella tabella seguente vengono riepilogate queste proprietà.

Proprietà Descrizione
DoubleClickSize Ottiene le dimensioni, in pixel, dell'area in cui l'utente deve fare clic due volte affinché il sistema operativo consideri i due clic su un doppio clic.
DoubleClickTime Ottiene il numero massimo di millisecondi che possono trascorrere tra un primo clic e un secondo clic per il sistema operativo per considerare l'azione del mouse un doppio clic.
MouseButtons Ottiene il numero di pulsanti del mouse.
MouseButtonsSwapped Ottiene un valore che indica se le funzioni dei pulsanti sinistro e destro sono state invertite.
MouseHoverSize Ottiene le dimensioni, in pixel, del rettangolo all'interno del quale il puntatore del mouse deve rimanere per l'intervallo di tempo richiesto perché sia generato un messaggio visualizzato al passaggio del mouse.
MouseHoverTime Ottiene il tempo, in millisecondi, per il quale il puntatore del mouse deve soffermarsi nell'area rettangolare sensibile al passaggio del mouse prima che venga generato un messaggio.
MousePresent Ottiene un valore che indica se è installato un mouse.
MouseSpeed Ottiene un valore che indica la velocità corrente del mouse, da 1 a 20.
MouseWheelPresent Ottiene un valore che indica se è installato un mouse con rotellina del mouse.
MouseWheelScrollDelta Ottiene la quantità del valore differenziale dell'incremento di una singola rotazione della rotellina del mouse.
MouseWheelScrollLines Ottiene il numero di righe da scorrere quando viene ruotata la rotellina del mouse.

Vedi anche