Panoramica dell'uso del mouse (Windows Form .NET)

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. Questo articolo descrive in dettaglio questi eventi del mouse e come ottenere e modificare le impostazioni di sistema per il mouse.

Importante

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

In Windows Form, l'input dell'utente viene inviato alle applicazioni sotto forma di messaggi di Windows. Una serie di metodi sottoponibili a override elabora questi messaggi a livello di applicazione, modulo e controllo. Quando questi metodi ricevono messaggi del mouse, generano eventi che possono essere gestiti per ottenere informazioni sull'input del mouse. In molti casi, Windows Form applicazioni possono elaborare tutti gli input utente semplicemente gestendo questi eventi. In altri casi, un'applicazione può eseguire l'override di uno dei metodi che elaborano i messaggi per intercettare un determinato messaggio prima che venga ricevuto dall'applicazione, dalla maschera o dal controllo.

Eventi del mouse

Tutti i controlli Windows Form ereditano un set di eventi correlati all'input del mouse e della tastiera. Ad esempio, un controllo può gestire l'evento MouseClick per determinare la posizione di un clic del mouse. Per altre informazioni sugli eventi del mouse, vedere Uso degli eventi del mouse.

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 . È quindi 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.

Modifica delle impostazioni di input del mouse

È 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 di clic standard, 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 l'azione del mouse da considerare 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.

Metodi che elaborano i messaggi di input dell'utente

Moduli e controlli hanno accesso all'interfaccia IMessageFilter e a un set di metodi sostituibili che elaborano i messaggi di Windows in punti diversi nella coda dei messaggi. Questi metodi hanno tutti un Message parametro che incapsula i dettagli di basso livello dei messaggi di Windows. È possibile implementare o eseguire l'override di questi metodi per esaminare il messaggio e quindi utilizzare il messaggio o passarlo al consumer successivo nella coda dei messaggi. La tabella seguente presenta i metodi che elaborano tutti i messaggi di Windows in Windows Form.

Method Note
PreFilterMessage Questo metodo intercetta i messaggi windows in coda (noti anche come pubblicati) a livello di applicazione.
PreProcessMessage Questo metodo intercetta i messaggi di Windows a livello di modulo e di controllo prima dell'elaborazione.
WndProc Questo metodo elabora i messaggi di Windows a livello di modulo e di controllo.
DefWndProc Questo metodo esegue l'elaborazione predefinita dei messaggi di Windows a livello di modulo e controllo. In questo modo viene fornita la funzionalità minima di una finestra.
OnNotifyMessage Questo metodo intercetta i messaggi a livello di modulo e controllo dopo l'elaborazione. Per chiamare questo metodo, è necessario impostare il EnableNotifyMessage bit di stile.

Vedi anche