MouseMove - Pressione di più tasti

sabato 29 novembre 2008 - 15.50

tizio90 Profilo | Newbie

Come faccio a verificare, nel momento in cui viene generato l'evento MouseMove, se l'utente sta premendo due o più tasti del mouse contemporaneamente? Grazie in anticipo per le risposte!

schifidus Profilo | Junior Member

nel handler del metodo Mouse_Move devi solo verificare la proprietà Button della classe MouseEventArgs a cui hai accesso attraverso l'istanza e.
La classe in oggetto ti permette di verificare quale bottone è premuto.
Questo piccolo snippet code ti potrà essere d'aiuto
void Form1_MouseMove(object sender, MouseEventArgs e)
{
switch(e.Button)
{
case MouseButtons.Left:
break;
case MouseButtons.Right:
break;
case MouseButtons.Middle:
break;
case MouseButtons.None:
break;
}
}

Ciao.
Marco Farina
MCTS .NET Framework 2.0 Web Applications
MCPD Web Applications

tizio90 Profilo | Newbie

Grazie lo stesso, ma questo l'ho gia fatto. Il problema è quando provo a premere 2 tasti del mouse contemporaneamente.
MouseButtons.Left
MouseButtons.Right
Se premo left e right insieme, entrambi risulteranno non premuti!!!

aiedail92 Profilo | Expert

Ciao

Devi verificare la combinazione usando l'operatore Or:

if (e.Button == (MouseButtons.Left | MouseButtons.Right)) { }

Luca

schifidus Profilo | Junior Member

E' sufficiente che metti un default nello switch. se non hai premuto nulla entrerà in questo case.
Ecco il codice.

void Form1_MouseMove(object sender, MouseEventArgs e)
{

switch(e.Button)
{
case MouseButtons.Left:
break;
case MouseButtons.Right:
break;
case MouseButtons.Middle:
break;
case MouseButtons.None:
break;
default:
// se hai premuto tutti e due i tasti ti entrerà qui
break;
}
}

Ciao Marco.
Marco Farina
MCTS .NET Framework 2.0 Web Applications
MCPD Web Applications

tizio90 Profilo | Newbie

>aiedail92 wrote:
>
>Ciao
>
>Devi verificare la combinazione usando l'operatore Or:
>
>if (e.Button == (MouseButtons.Left | MouseButtons.Right))
>{
>}
>
>Luca

Grazie, funziona!

aiedail92 Profilo | Expert

Probabilmente non hai scritto bene le parentesi: devi raggruppare l'operatore or ai due MouseButtons, e poi confrontarli con la proprietà Button di e, così:

if (e.Button == (MouseButtons.Left | MouseButtons.Right)) { }

Luca

tizio90 Profilo | Newbie

>Probabilmente non hai scritto bene le parentesi: devi raggruppare
>l'operatore or ai due MouseButtons, e poi confrontarli con la
>proprietà Button di e, così:
>
>if (e.Button == (MouseButtons.Left | MouseButtons.Right))
>{
>}
>
>Luca

Si, hai ragione, me ne sono accorto subito dopo aver postato, infatti ho modificato il messaggio precedente.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5