Dans WPF, comment dites-vous si le bouton gauche de la souris est actuellement en panne, sans l'aide de tous les événements?
J'ai une appli où je veux être en mesure de déplacer un curseur. Toutefois, le curseur est automatiquement mis à jour par le programme toutes les 30 secondes. Quand j'ai essayer de changer la position du curseur de ma souris, le programme est toujours de mise à jour de la position du curseur, donc je ne peux pas le déplacer manuellement avec la souris.
En quelque sorte, je veux de l'application afin de ne PAS mettre à jour le curseur si l'utilisateur est en train de changer sa position. Comment puis-je savoir si le bouton gauche de la souris vers le bas, sans l'aide du bouton de gauche enfoncé événement? Je veux juste être en mesure d'accéder à la souris, et de vérifier l'état du bouton du bouton gauche de la souris. Comment puis-je y accéder sans être à l'intérieur d'un événement de souris?
J'ai essayé MouseLeftButtonDown et MouseLeftButtonUp événements, et ils n'ont jamais été tiré. Avec plus de recherche, j'ai découvert que le Curseur de Contrôle gobe ces événements et se déclenche jamais. Alors, après quelques expérimentations et la recherche, j'ai découvert que je peux utiliser le PreviewMouseLeftButtonDown et méthodes à la place. Ils accomplir ce dont j'avais besoin. J'ai posté le code ci-dessous comme une réponse à ce post. Merci pour de me pointer dans la bonne direction. Je vous ai donné un point.
OriginalL'auteur Curtis | 2013-04-18
Vous devez vous connecter pour publier un commentaire.
bool mouseIsDown = Système.De Windows.D'entrée.De la souris.LeftButton == MouseButtonState.Pressé;
cela devrait être la solution retenue
OriginalL'auteur DanW
Ok,
J'ai tout compris. Le Curseur de contrôle dans WPF ne déclenche PAS l'MouseDown, LeftMouseDown, ou LeftMouseUp événements. C'est parce qu'il utilise en interne pour ajuster la valeur que l'utilisateur manipule le curseur. Toutefois, le contrôle de Curseur dans WPF N'feu le PreviewLeftMouseDown et la PreviewLeftMouseUp événements. En outre, lorsque vous cliquez sur le bouton Gauche de la Souris, le Curseur de Contrôle de la capture automatiquement la souris et le retient jusqu'à ce que vous relâchez le bouton Gauche de la Souris.
J'ai pu résoudre mon problème avec les 3 événements suivants:
Ouais, il doit attendre 2 jours pour accepter sa propre réponse.
Juste une note de côté, je n'ai jamais comme l'utilisation de la plage de Temps de constructeur. Je déteste avoir à compter le nombre de paramètres il y a à savoir ce qu'il signifie.
TimeSpan.FromMilliseconds((int)e.NewValue)
est un peu plus évident.OriginalL'auteur Curtis
Vous pouvez, dans votre cas, à l'aide de Souris De Classe.
Si je ne me trompe pas il n'est pas suivi de l'état du bouton lorsque la souris
sort de l'INTERFACE utilisateur de l'application, afin d'être sûr que vous avez toujours des informations correctes,
vous devrez peut-être la capture de la souris.
Le répète, vous avez besoin de vérifier cela par vous-même.
OriginalL'auteur Tigran
Si je comprends bien, vous voulez garder un pattern MVVM pour accomplir cette tâche.
Alors d'abord je voudrais commencer par la conception de ce que je veux dans mon ViewModel
alors vous pouvez utiliser les
Blend Interactivity
bibliothèque pour faire l'INTERFACE utilisateur côté dans le code xaml.L'exemple suivant est un exemple. Je ne sais pas si le nom de l'événement est correct. Vous pouvez également faire la même chose avec la souris et faire le montage.
OriginalL'auteur Nick Freeman