GESTIRE IL MOUSE IN VB.NET


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

Autore: Fabrizio De Odorico

TAGS: Cursor.Position, Eventi, Mouse, MousePosition, Vb.net

Postato il 09/02/2013 | Invia ad un amico  |   Versione stampabile  |   Aggiungi ai preferiti  |   Visite: 7158  |   Contattami su whatsapp

Modulo Login

 

 

 

 

 

Vuoi offrirmi un caffè?

Se trovi utili i miei articoli o vuoi aiutarmi ad aggiungere altro materiale sul sito...

fai una Donazione

Terminologia

La piattaforma .Net è una suite di prodotti creata dalla Microsoft dove i vari linguaggi di programmazione sono orientati agli oggetti (da C# a Visual Basic a J#).
Il bytecode di .NET viene compilato al momento dell'esecuzione (just in time compilation) ed è compatibile con le sole piattaforme Windows.

Java è un linguaggio di programmazione orientato agli oggetti creato dalla Sun Microsystems.
Il bytecode, generato dalla compilazione, viene interpretato dalla Java Virtual Machine in fase di esecuzione. Per questo motivo le applicazioni java sono indipendenti dall'hardware sulle quali vengono eseguite.