2008-12-06 7 views
3

Existe-t-il un moyen simple de dire quel événement Click déclenché d'un bouton en dehors de définir plusieurs indicateurs dans les gestionnaires d'événements souris/clé haut/bas? Je ne suis actuellement intéressé qu'à distinguer la souris de tout le reste, mais ce serait sympa de manipuler Stylus et d'autres types d'entrée si possible. Dois-je créer mon propre contrôle de bouton pour y parvenir? Editer: Pour clarifier pourquoi je m'en soucie: dans ce cas particulier j'essaye d'implémenter les boutons "suivant" et "précédent" pour une sorte de visionneuse d'image. Les images en question peuvent être de taille différente et les positions des boutons changeront (elles sont donc toujours centrées en dessous de l'image). C'est assez énervant de suivre de tels boutons avec la souris si vous avez besoin de faire défiler plusieurs images, donc je veux garder la position de la souris constante par rapport au bouton cliqué, mais seulement si elle a été cliquée par la souris.Comment savoir si un événement de clic sur un bouton a été déclenché par le clavier ou la souris dans WPF?

Édition2: Peu importe si les boutons sont en haut ou en bas en bas, car le centre peut changer de toute façon. "Picture viewer" est juste une abstraction et dans ce cas particulier, il est important pour moi que le coin supérieur gauche de l'image conserve sa position, mais il est hors de la portée de la question d'entrer dans les détails. La mise à l'échelle de l'image n'est pas aussi triviale dans ce type d'application, donc je veux connaître la réponse à la question que j'ai posée ne pas entrer dans la discussion sur la mise en œuvre de l'interface utilisateur.

+0

Est-ce que ma réponse ne vous donne pas suffisamment d'informations ou est-ce que quelque chose me manque? – Micah

+0

Votre réponse est exactement ce que je n'ai pas demandé: gérer séparément les gestionnaires d'événements Souris/Key Up et Down. Oui, c'est une façon de le faire, mais ce n'est pas aussi élégant que je le voudrais. –

Répondre

6
if (InputManager.Current.MostRecentInputDevice is KeyboardDevice) 
0

Vous devriez plutôt gérer spécifiquement les événements MouseXXX, StylusXXx et KeyboardXXX.

0

Pourriez-vous expliquer pourquoi vous vous en soucieriez? Ayant écrit de nombreux contrôles personnalisés moi-même au cours des années, je ne peux pas me souvenir d'une instance où je me souciais de la façon dont un événement de clic a été déclenché. (Excepté pour ce pépin de cycle de contrôle de pré-VB6 qui a déclenché le focus de focus-clic obtenu dans un ordre différent selon que vous avez cliqué sur un bouton, utilisé une touche accélératrice ou appuyé sur ENTRÉE par défaut).

+0

Dans mon cas, j'ai une zone de texte où appuyer sur Entrée va cliquer sur un bouton par défaut. Si l'utilisateur n'a pas entré une valeur, je veux les avertir (en raison d'une action précédente, c'est assez facile à faire). Cependant, si elles cliquent sur le bouton lui-même, je suppose qu'il était délibéré et ils ne voulaient pas entrer une valeur. –

0

Personnellement, je trouve cela agaçant quand les gens placent des boutons au bas des formulaires Windows et des pages Web. Lisez une partie de la documentation sur l'assurance-chômage et vous constaterez que la plupart des gens ne vont même pas si loin s'ils ne trouvent pas quelque chose d'intéressant sur la page/le formulaire. J'aime pouvoir cliquer ensuite dès que je sais que le contenu ne m'intéresse pas, alors gardez les boutons de navigation en évidence en haut.

Je mettrais le prev/next en haut de l'image où vous pouvez contrôler leur position. Danser autour de ces boutons va à l'encontre de la plupart des opinions sur la cohérence de l'interface utilisateur. En outre, créer une expérience différente pour un utilisateur de souris par rapport à un utilisateur de clavier va également à l'encontre de la plupart des idées actuelles sur la conception d'une interface utilisateur.

L'alternative est de choisir une taille maximale constante qu'une image peut obtenir sur l'interface utilisateur et si elle dépasse cette échelle pour s'adapter, sinon lui permettre de changer librement dans une trame. Cela maintient vos boutons au même endroit si vous devez absolument les avoir sur le fond.

+0

Je ne suis pas d'accord - il suffit de regarder le diaporama Picasa ou Windows Picture Viewer et vous trouverez ces boutons en bas. Vos préférences personnelles sont assez compréhensibles, mais ma vision de l'interface utilisateur dans ce cas est différente. Quoi qu'il en soit, cette question ne concerne pas du tout l'assurance-chômage. –

0

Vous pouvez créer une énumération avec les différents appareils, ont une propriété globale que vous définissez à chaque fois que la souris/clavier/etc. est lancé, et il suffit de s'y référer lorsque cela est nécessaire.

Questions connexes