| 

.NET C# Java Javascript Exception

4
Hallo Zusammen,

wie kann ich in vb.net einen Drag&Drop-Vorgang wieder abbrechen (ohne Tastatur oder Maus, bitte nur per Code ;-))?

Detailiertere Beschreibung:

Ich erstelle gerade ein WinForms-Control, welches es ermöglichen soll, Zeitbalken a) innerhalb des Controls zu verschieben und b) auch per Drag&Drop in andere Controls dieser Art zu verschieben.

Teil a) klappt super und wenn mein Ziel auf direktem Wege eine andere Zeitstrahl-Komponente ist, ist auch das kein Problem.

Unschön ist bislang, dass wenn der User sich es beim Verschieben auf eine andere Koponente (DoDragDrop in Source bereits aufgerufen) anders überlegt und den Balken doch wieder auf dem Quell-Zeitstrahl ablegen möchte, dann würde ich gern den Drag&Drop-Vorgang abbrechen, meine benutzten Flags setzen und weiter mit dem Procedere verfahren, welches im MouseMove-Event mit gedrückter Maustaste gehandelt wird. Ich weiß, wie ich feststelle, dass der data-Inhalt beim DragOver-Event der vom selben Control ist, aber jetzt fehlt mir etwas, womit ich die Drag&Drop-OP canceln kann.

Hat jemand hier vielleicht eine Idee, wie dies zu realisieren wäre?

Freundliche Grüße aus Plettenberg,

Björn Winkler
News:
02.02.2012
b.winkler 21 1 2
3 Antworten
1
Eigentlich würde ich sagen brauchst Du nichts weiter als die typischen Drag & Drop Events. Ich denke in dem Satz "anders überlegt und den Balken doch wieder auf dem Quell-Zeitstrahl ablegen möchte," steckt schon die Lösung. Dein Zeitstrahl selbst wird ja irgendwas von Control abgeleitetes sein und daher wirst Du auch wieder das DragEnter/DragOver Event haben in dem Du den Vorgang abbrechen kannst mit Hilfe von e.Effect.

Grüße
02.02.2012
Slashi 409 2 8
0
Hallo und Dank für Deine Antwort.

Allerdings funktioniert das leider nicht ganz so recht... wenn ich den Drag-Vorgang starte, setze ich im Control ein Flag i_AmDraging. Im DragEnter prüfe ich natürlich erst den Typ von dem in Data abgelegten Objekt. Sollte das der gewünschte Typ sein, und ist das i_AmDraging-Flag gesetzt weiß ich, dass die Drag-Quelle = Drop-Ziel ist und genau dann soll es abgebrochen werden.
Hier kann ich dann zwar mit effect.none sagen, dass das Ablegen nicht möglich ist, aber das bricht nicht den Drag&Drop-Vorgang ab, sprich die DoDragDrop-Funktion hat noch nichts zurückgegeben und es wird lediglich der hässliche ;-) Drop-Nicht-erlaubt-Cursor angezeigt.

Kann natürlich auch sein, dass ich hier einen groben Denkfehler habe, aber ich glaube so funktioniert es nicht.

Erneute Grüße
02.02.2012
b.winkler 21 1 2
0
Hallo Björn,

versuchs mal mit dem Control.QueryContinueDrag-Ereignis und DragAction.Cancel.

Viel Erfolg
Florian
02.02.2012
ffordermaier 8,4k 3 9

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH