Question

J'ai une application qui ouvre un formulaire modal avec la méthode ShowDialog. Une fois que ce formulaire est affiché, je souhaite capturer le mouvement de la souris, même si le curseur se trouve en dehors du formulaire. Comment puis-je capturer le mouvement de la souris? J'ai vu quelque chose avec la propriété Capture mais je n'arrive pas à le faire fonctionner.

[edit]

Je souhaite être averti si la souris se déplace en dehors du formulaire.

Était-ce utile?

La solution

La propriété Capture est appropriée, mais il existe certaines limitations.

  • Seule la fenêtre au premier plan peut capturer la souris
  • La capture de la souris peut être désactivée par d'autres parties du système
  • La fonction SetCapture de l'API Win32 est réinitialisée à chaque fois qu'un " souris haut " " événement se produit. Je suppose que cela vaut également pour .NET.

Voir la section des remarques de la propriété Capture .

Lorsque la souris est capturée, vous recevez les événements habituels mais avec une plage de coordonnées de souris plus étendue (par exemple, une position X négative, si la souris est à gauche du contrôle de capture)

La capture de souris est fragile en raison de sa nature globale. Vérifiez s'il existe d'autres moyens de gérer certains événements. Peut-être que les événements MouseLeave ou MouseEnter sont suffisants dans votre cas.

Autres conseils

Vous pouvez simplement utiliser la propriété statique Control.MousePosition .

Vous pouvez lire la position du curseur à l'aide de la propriété Cursor.Position. Voir Cursor.Position

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top