2010-10-28 4 views
8

J'ai un formulaire Windows dans une fenêtre wpf, et j'essaie d'utiliser DragMove lorsque je clique sur le formulaire Windows, c'est une image, donc je veux pouvoir faire glisser la fenêtre juste en cliquant sur l'image.WPF Forcer MouseDevice à appuyer

J'attrape la souris de ma forme et relevez la manifestation MouseLeftButtonDown de fenêtre WPF avec:

if (e.Button == MouseButtons.Left) 
{ 
    MouseDevice mouseDev = InputManager.Current.PrimaryMouseDevice; 
    MouseButtonEventArgs mouseEvent = new MouseButtonEventArgs(mouseDev, 0, MouseButton.Left) 
     { 
      RoutedEvent = MouseLeftButtonDownEvent 
     }; 
    RaiseEvent(mouseEvent); 
} 

Cependant chaque fois que je vérifie le InputManager.Current.PrimaryMouseDevice de mon gestionnaire (ou le gestionnaire MouseMove de ma forme), de la LeftButton l'état est "libéré".

Pourquoi est-ce? Je ne peux pas trouver un moyen de le forcer à "appuyer" puisque toutes les propriétés sont en lecture seule.

Ou est-ce que mon approche est simplement fausse et n'est pas possible? J'ai également essayé de définir l'emplacement de ma fenêtre lors du déplacement de la souris, mais des trucs bizarres se produisent lorsque les valeurs de ma souris reviennent à la position précédente.

Merci!

edit: Donc j'ajuste manuellement l'emplacement de la fenêtre, mais j'espère quand même que quelqu'un pourra m'expliquer pourquoi MouseDevice n'est pas pressé sur un formulaire Windows. Le "truc étrange arrive ..." était juste une erreur stupide de ma part, j'ai continué à réinitialiser les coordonnées de la souris au déplacement de la souris, mais j'ai réalisé que ma souris ne bouge jamais par rapport à la fenêtre puisque la fenêtre bouge aussi!

Répondre

1

Un similar issue m'a bloqué pendant un moment: la propriété ButtonState de MouseButtonEventArgs reflète l'état en temps réel de ce bouton, pas un instantané d'état pris lorsque l'événement a été déclenché. Je me demande si la même chose vaut pour votre accès à l'état LeftButton.

Hope this helps,
Ben

+0

Eh bien pas tout à fait; puisque je suis en train de cliquer sur + glisser, l'état en direct devrait toujours être "pressé" quand l'événement MouseDown est touché, cependant il n'est pas pressé. Peut-être que cela a à voir avec les formes de fenêtres. Lorsque je clique à l'extérieur de mon formulaire, il me dit que la souris est pressée, mais si je clique à l'intérieur du formulaire, ce n'est pas le cas. – mmod

Questions connexes