Auf System.Windows.UIElement
gibt es eine CaptureMouse()
und eine gepaarte ReleaseMouseCapture()
Methode. In diesem WPF DragDrop- Beispiel rufen sie CaptureMouse bei MouseDown auf und geben es bei MouseUp frei. Die Dokumentation in MSDN ist so nutzlos wie sie kommt - "CaptureMouse -> Erfasst die Maus."
Bevor ich es versuchte, nahm ich in meinem Kopf an, dass es die Maus irgendwie innerhalb der UIElement-Grenzen verriegelte, aber das ist eindeutig nicht der Fall, wenn ich es versuche. Vom Experimentieren scheint es etwas damit zu tun zu haben, auf Ereignisse zu reagieren, wenn sich die Maus außerhalb des UIElement befindet, aber kein Frachtkult-Programmierer sein möchte. Ich möchte es nicht nur verwenden, weil das Beispiel es tut, möchte ich eine maßgebliche Beschreibung dessen, was es bedeutet.
Antworten:
Vom Erfassen und Entschlüsseln der Maus auf MSDN:
Nur das Erfassungssteuerelement empfängt die Mausereignisse bis zur Freigabe.
Das Erfassen der Maus ist nützlich zum Ziehen, da der gesamte Ziehcode in einem Steuerelement vorhanden sein kann, anstatt auf mehrere Steuerelemente verteilt zu sein.
quelle
Wenn die Maus erfasst wurde, empfängt ein Steuerelement Mausereignisse, auch wenn sich der Mauszeiger nicht mehr in seinem Begrenzungsbereich befindet.
In der Regel wird es verwendet für:
quelle
Die Silverlight 2-Dokumentation dafür enthält eine ausführlichere Beschreibung. Ich weiß nicht, warum sie nicht auch Teil der 3.5-Dokumentationsseite ist:
Dies funktioniert genauso mit WPF. Der Grund für die Verwendung mit DragDrop ist, dass das Gerät dem zu ziehenden Steuerelement Bericht erstattet, wenn sich die Maus möglicherweise außerhalb dieses Steuerelements befindet. Wenn Sie MyCanvas.Capture () und Capture (Null) auskommentieren (wodurch es gelöscht wird), können Sie nicht mehr löschen.
quelle