2010-08-26 29 views
5

J'ai un formulaire avec des boutons. Cette application est destinée à fonctionner sur un ordinateur à écran tactile. Quand on clique sur un bouton, je voudrais savoir s'il a été cliqué par la souris ou l'écran tactile.Comment savoir quel périphérique physique a cliqué sur un bouton en C#?

Est-ce possible? Si c'est le cas, comment?

+1

Quel système d'exploitation utilisez-vous? XP, Win7? – ParmesanCodice

+0

Cela ressemble à un très mauvais choix dans la conception de l'interface utilisateur – Jonathan

Répondre

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

Ceci est une façon grossière de le faire, car il va attraper un bouton à tout moment d'exception est « cliqué » par quelque chose d'autre que la souris, soit l'écran tactile ou le retour du clavier. Mais il fera le travail :)

+1

+1 pour le piratage pure et simple – Stimul8d

+0

Il doit y avoir une meilleure façon plus directe de faire cela. – Bernard

+0

@ Stimul8d Je n'aurais pas pu le dire mieux. –

1

Prendre de la réponse de Wildhorn cette façon évite les exceptions jetés:

MouseEventArgs thisObject = e as MouseEventArgs 

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

Il n'y a pas beaucoup différent, mais vous n'avez pas les frais généraux de la gestion des exceptions. Aussi, vous pouvez essayer plusieurs moulages jusqu'à ce que vous ayez le bon.

+0

Beaucoup plus élégant! –