2010-08-26 13 views
5

Ho un modulo con pulsanti. Questa applicazione è pensata per funzionare su un computer touchscreen. Quando si fa clic su un pulsante, vorrei sapere se è stato fatto clic con il mouse o il touchscreen.Come dire quale dispositivo fisico ha fatto clic su un pulsante in C#?

È possibile? Se é cosi, come?

+1

Quale sistema operativo stai utilizzando? XP, Win7? – ParmesanCodice

+0

Sembra una scelta davvero scadente nella progettazione dell'interfaccia utente – Jonathan

risposta

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. 
    } 
} 

Questo è un modo grossolano per farlo, perché sarà prendere un tasto qualsiasi momento eccezione è "cliccato" da qualcosa altro che il mouse, sia touchscreen o il ritorno di tastiera. Ma farà il lavoro :)

+1

+1 per lo sfrido immediato. – Stimul8d

+0

Ci deve essere un modo migliore e più diretto per farlo. – Bernard

+0

@ Stimul8d Non avrei potuto dirlo meglio. –

1

Prendendo dalla risposta di Wildhorn questo modo evita le eccezioni gettati:

MouseEventArgs thisObject = e as MouseEventArgs 

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

Non è molto diverso, ma non avete il sovraccarico di gestione delle eccezioni. Inoltre, puoi provare più cast fino a quando hai ottenuto quello giusto.

+0

Molto più elegante! –