In questo articolo vedremo come ottenere / gestire le azioni fatte con il mouse e, in aggiunta, mostrare come controllare il mouse stesso.

Per ottenere la posizione dove il mouse è posizionato sullo schermo è sufficiente usare la proprietà MousePosition che mi tornerà la posizione come punto (Point) oppure tramite Cursor.Position.

                        
MessageBox.Show("Coordinata X: " & MousePosition.X & " Coordinata Y: " & MousePosition.Y)
'per ottenere le coordinate X e Y del punto ove è posizionato il mouse

MessageBox.Show("Coordinata X: " & Cursor.Position.X & " Coordinata Y: " & Cursor.Position.Y)
'come sopra ma utilizzando la posizione del cursore (che coincide con quella del mouse) 
                    

La differenza tra MousePosition e Cursor.Position è che il primo è una proprietà di sola lettura mentre il secondo lo possiamo valorizzare allo scopo di spostare il cursore del mouse in un certo punto dello schermo.

                        
Cursor.Position = New Point(320, 160)
'Sposto il cursore nel punto con coordinate 320,160 
                    

Vediamo ora di capire quale tasto del mouse viene premuto.
Per fare ciò utilizzeremo l'evento MouseClick sul controllo che vogliamo "sorvegliare", per esempio il form.

                        
Private Sub Form1_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseClick
    Select (e.Button)
        Case Windows.Forms.MouseButtons.Left
            'Azione da svolgere per avere premuto il pulsante sinistro del mouse
        Case Windows.Forms.MouseButtons.Right
            'Azione da svolgere per avere premuto il pulsante destro del mouse
        Case Windows.Forms.MouseButtons.Middle
            'Azione da svolgere per avere premuto il pulsante centrale del mouse
        Case Windows.Forms.MouseButtons.XButton1
            'Azione da svolgere per avere premuto il pulsante extra 1 del mouse
        Case Windows.Forms.MouseButtons.XButton2
            'Azione da svolgere per avere premuto il pulsante extra 2 del mouse
        Case Windows.Forms.MouseButtons.None
            'Azione da svolgere quando non viene premuto nessun pulsante
    End Select
End    
                    

Come si può intuire, e.Button è un tipo enumerativo che ha quei 6 valori possibili.

La pressione di un pulsante del mouse, quando il cursore è posizionato su un dato controllo, genera una serie di eventi come riportata qui di seguito:
- Evento MouseDown
- Evento Click
- Evento MouseClick
- Evento MouseUp

Un'altra caratteristica del mouse è la possiblità di usare lo scroll (la rotellina) per muoversi in su o in giù: qui entra in gioco l'evento MouseWheel. Vediamo come:

                        
Private Sub Form1_MouseWheel(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseWheel
    If e.Delta > 0 Then
        'La rotellina è stata ruotata verso l'alto
    ElseIf e.Delta < 0 Then
        'La rotellina è stata ruotata verso il basso
    End If
End Sub                 
                    

e.Delta rappresenta la quantità di scroll effettuata con la rotellina.

Esistono anche altri eventi per il mouse che potrebbero risultare utili:
- MouseDoubleClick
- MouseEnter
- MouseHover
- MouseLeave
- MouseMove

E' anche possibile simulare la pressione di un tasto del mouse. Per fare ciò andremo a dichiarare la seguente

                        
Private Declare Sub mouse_event Lib "user32.dll" (ByVal dwFlags As Integer, ByVal dx As Integer, ByVal dy As Integer, ByVal cButtons As Integer, ByVal dwExtraInfo As Integer)                 
                    

Successivamente creiamo una funzione Simula_Click_Mouse ove metteremo le istruzioni necessarie per eseguire la simulazione.

                        
Private Sub Simula_Click_Mouse(ByVal button As Integer, ByVal state As String)
    Select Case button
        Case 1
            If state = "GIU" Then
                mouse_event(2, 100, 100, 0, 0)
            Else
                mouse_event(4, 100, 100, 0, 0)
            End If
        Case 2
            If state = "GIU" Then
                mouse_event(8, 100, 100, 0, 0)
            Else
                mouse_event(16, 100, 100, 0, 0)
            End If
        Case 3
            If state = "GIU" Then
                mouse_event(32, 100, 100, 0, 0)
            Else
                mouse_event(64, 100, 100, 0, 0)
            End If
    End Select
End Sub                 
                    

Per simulare la pressione di un tasto, basterà quindi richiamare la funzione con i parametri corretti.

                        
Simula_Click_Mouse(1, "GIU")
'Viene simulata la pressione del tasto 1

Simula_Click_Mouse(2, "SU")
'Viene simulato il rilascio del tasto 2