2010-08-26 11 views
5

Tengo un formulario con botones. Esta aplicación está diseñada para ejecutarse en una computadora con pantalla táctil. Cuando se hace clic en un botón, me gustaría saber si se hizo clic con el mouse o la pantalla táctil.¿Cómo saber qué dispositivo físico hizo clic en un botón en C#?

¿Esto es posible? ¿Si es así, cómo?

+1

¿Qué sistema operativo está utilizando? XP, Win7? – ParmesanCodice

+0

Esto suena como una opción muy pobre en el diseño de IU – Jonathan

Respuesta

3
private void button_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     ((MouseEventArgs)e).Button.ToString(); 
    } 
    catch(Exception) 
    { 
     //If an exception is catch, it means the mouse was not used. 
    } 
} 

Ésta es una forma bruta de hacerlo, porque va a coger un botón en cualquier momento excepción es "clic" por algo más que el ratón, pantalla táctil o bien el regreso del teclado. Pero va a hacer el trabajo :)

+1

+1 para hackers descarados – Stimul8d

+0

Tiene que haber una forma mejor y más directa de hacerlo. – Bernard

+0

@ Stimul8d No podría haberlo dicho mejor. –

1

Tomando de la respuesta de Wildhorn esta manera evita las excepciones que son lanzadas:

MouseEventArgs thisObject = e as MouseEventArgs 

if(thisObject != null) 
{ 
//Do Something 
} 

No es muy diferente, pero que no tiene la sobrecarga de la gestión de excepciones. También puedes probar múltiples moldes hasta que obtengas el correcto.

+0

¡Mucho más elegante! –

Cuestiones relacionadas