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