Funzionamento dell'input del mouse nei Windows Forms
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 ulteriori informazioni riguardo ai dati forniti con gli eventi del mouse e sull'ordine in cui vengono generati gli eventi di clic del mouse, vedere Eventi mouse in Windows Forms.
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, il Control che contiene il HotSpot attiva l'evento del mouse corrispondente. È possibile ottenere la posizione corrente del mouse con la proprietà Location del MouseEventArgs quando si gestisce un evento del mouse o utilizzando la proprietà Position della classe Cursor. 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 controlli ListView, TreeView, MonthCalendar e DataGridView. Usato in combinazione con un evento del mouse appropriato, come ad esempio MouseHover, il controllo del rilevamento degli urti è 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 attivati.
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 solo quando è necessario determinare quando si verifica un clic. |
MouseClick | Questo evento si verifica quando l'utente fa clic sul controllo con il mouse. Il gestore per 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 dell'evento riceve un argomento di tipo EventArgs. Gestisci questo evento solo quando è necessario determinare quando si verifica un doppio clic. |
MouseDoubleClick | Questo evento si verifica quando l'utente fa doppio clic sul controllo con il mouse. Il gestore per questo evento riceve un argomento di tipo MouseEventArgs. Gestisci questo evento quando è necessario ottenere informazioni sul mouse a seguito di 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 per 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 per 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 per 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 per questo evento riceve un argomento di tipo MouseEventArgs. |
MouseWheel | Questo evento si verifica quando l'utente ruota la rotellina del mouse quando il controllo è attivo. Il gestore dell'evento riceve un argomento di tipo MouseEventArgs. È possibile utilizzare la proprietà Delta di MouseEventArgs per determinare la distanza di scorrimento del mouse. |
Modificare l'input del mouse e rilevare le impostazioni di sistema
È possibile rilevare e modificare il modo in cui un controllo gestisce l'input del mouse derivando dal controllo e usando i metodi GetStyle e SetStyle. Il metodo SetStyle accetta una combinazione bitwise di valori ControlStyles per determinare se il controllo avrà un comportamento standard di clic singolo o doppio clic, oppure se gestirà autonomamente l'elaborazione degli input del mouse. Inoltre, la classe SystemInformation 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 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 del mouse sono state scambiate. |
MouseHoverSize | Ottiene le dimensioni, in pixel, del rettangolo all'interno del quale il puntatore del mouse deve rimanere durante l'attesa prima che venga generato un messaggio di passaggio del mouse. |
MouseHoverTime | Ottiene il tempo, espresso in millisecondi, che il puntatore del mouse deve rimanere nel rettangolo di passaggio del mouse prima che venga generato un messaggio al passaggio del mouse. |
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 una 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 la rotellina del mouse viene ruotata. |
Vedere anche
.NET Desktop feedback