77 votes

Que signifie "Capturer la souris" dans WPF?

Sur System.Windows.UIElement il y a un CaptureMouse() et un jumelé ReleaseMouseCapture() méthode. Dans ce WPF DragDrop de l'échantillon qu'ils appellent CaptureMouse sur MouseDown et le publier sur MouseUp. La documentation MSDN est à peu près aussi inutile qu'il s'agit - "CaptureMouse -> Capture de la souris."

Dans ma tête avant de l'essayer, je suppose que c'est en quelque sorte bloqué la souris à l'intérieur de la UIElement de limites, mais c'est clairement pas le cas quand je l'ai essayer. De l'expérimentation, il semble avoir quelque chose à voir avec la réponse aux événements lorsque la souris est en dehors de la UIElement, mais ne voulant pas être un culte du cargo programmeur je ne veux pas l'utiliser parce que l'exemple est le cas, je voudrais une autorité description de ce qu'il signifie.

85voto

Cameron MacFarland Points 27240

À partir de la Capture et Uncapture la Souris sur MSDN:

Lorsqu'un objet de capture de la souris, tous les événements liés à la souris sont traitées comme si l'objet avec la souris de capture de célébrer l'événement, même si le pointeur de la souris est sur un autre objet.

La capture de la souris est utile pour le déplacement, car seule la capture de contrôle reçoit les événements de la souris, jusqu'à leur libération. Toutes les glisser code peut exister dans le contrôle, plutôt que d'être répartis sur plusieurs contrôles.

14voto

Alun Harford Points 2373

Une fois la souris capturée, un contrôle recevra les événements de la souris même si le pointeur de la souris ne se trouve plus dans sa zone de délimitation.

En règle générale, il est utilisé pour:

  • Glisser déposer
  • Boutons (pour manipuler Mouse Up lorsque vous placez la souris sur le bouton et que vous la déplacez avant de relâcher le bouton)

4voto

rmoore Points 9561

Le Silverlight 2 de la documentation qu'elle a une description plus détaillée, je ne sais pas pourquoi il n'est pas une partie de la 3.5 page de documentation:

Lorsqu'un objet a capturé la souris, qu'il reçoit de la souris d'entrée de savoir si ou non le pointeur de la souris est à l'intérieur de sa zone de délimitation. La souris est généralement capturé de simulation des opérations de glisser.
...

Il fonctionne de la même façon avec WPF, et donc la raison pour laquelle il est utilisé avec de glisser-déplacer, c'est la façon dont la il sait faire rapport au contrôle glissé à partir de quand la souris peut être en dehors de ce contrôle. Si vous commentez la MyCanvas.Capture() et la Capture(Null) (qui efface tout), vous ne pouvez plus déposer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X