2010-04-19 11 views
13

Nachdem eine Drag & Drop-Operation von DragDrop.DoDragDrop (...) gestartet wurde, werden keine MouseMove-Ereignisse mehr ausgelöst. Ich probierte sogarDoDragDrop deaktiviert MouseMove-Ereignisse

AddHandler(Window.MouseMoveEvent, new MouseEventHandler(myControl_MouseMove), true); 

wo der letzte Parameter bedeutet, dass ich sogar für behandelte Ereignisse aktivieren. Keine Chance, es scheint, als würde das MouseMove-Event niemals ausgelöst! Gibt es noch Möglichkeiten, MouseMove-Ereignisse bei Verwendung von Drag & Drop zu erhalten? Ich würde gerne ziehen & Lassen Sie ein Steuerelement fallen, während Sie dieses Steuerelement ziehen, soll es dem Mauszeiger folgen. Irgendeine Idee, wie man das in diesem Fall macht?

+0

Dieser Nachrichten-Thread bestätigt auch genau das, was Sie sehen: http://social.msdn.microsoft.com/Forums/en/wpf/thread/1053aaa4-d8b6-48d7-8d53-2af98e60d542 –

Antwort

9

Sie müssen mit dem DragOver event umgehen.

EDIT: Versuchen Sie, die GiveFeedback event über die Kontrolle der Handhabung, die Sie DoDragDrop aufgerufen; das könnte tun, wonach du suchst.

+0

danke für Ihre Antwort, also würde ich Dragover zu allen Kontrollen in meinem Fenster hinzufügen und sie auf einen einzelnen Ereignishandler zeigen lassen müssen, der mein Steuerelement verschiebt? –

+0

Ich denke schon. (Ich habe das selbst nie gemacht) – SLaks

+0

Ich habe schließlich die WinApi verwendet, um die Cursorposition zu erhalten, aber manchmal wird auch die Verwendung von Dragover verwendet. Siehe http://blogs.msdn.com/b/jaymer/archive/2007/07/12/drag-drop-in-wpf-explained-end-to-end.aspx. –

0

Was ist die DragDrop.DoDragDrop-Konstruktion? DoDragDrop soll in der MouseDown/MouseMove-Methode tatsächlich aufgerufen werden, nicht in DragDrop. Es sollte anfangen, die Prozedur zu handhaben, nicht auf den Tropfen zu reagieren (der gewünschte Effekt des Tropfens, den Sie gerade in DragDrop implementieren). MouseMove wird nie ausgelöst, während Sie bereits ziehen, vielleicht wird deshalb auch nicht mit Ihnen abgefeuert, da Sie die Prozedur einstellen. Ich denke du gehst mit diesem falschen Weg um, hier ist eines der Beispiele http://msdn.microsoft.com/en-us/library/aa984430%28v=vs.71%29.aspx.