Button von einer Groupox zur nächsten verschieben, Mousedown, MouseUp, MouseMove

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Button von einer Groupox zur nächsten verschieben, Mousedown, MouseUp, MouseMove

    Hallo zusammen,

    ich bekomme es einfach nicht hin, dass ich einen Button von einer Groupbox mit MouseDown, MouseMove und MouseUp in ein andere Groupbox verschiebe. Innerhalb der Groupbox ist dies kein Problem, dies hab ich geschafft. Kann mir hier jemand weiterhelfen? Leider hört am Ende der Groupbox das verschieben auf und auch die Koordinaten werden anders berechnet.

    Wäre Klasse, wenn mir jemand helfen könnte.

    Viele Grüße

    Sascha :P
    naja, es fängt ja schin damit an, dass sobald der Button aus der Grpbox rausgeht, der Parent geändert wird... Vllt ab da das Control dem Parent der Grpbix hinzufügen, mal probieren ^^
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    Jetzt verstehe ich erstmal was du machen willst...
    Wenn du das Button via Maus während dein Programm läuft verschieben willst, solltest du die Maus-Abfrage in deiner Form machen (nicht in der Groupbox auf der es gerade ist) und..
    bei Mousedown.. dem Button.parent der Form unterordnen. Dadurch ist es nicht mehr ein deine GroupBox gebunden..
    bei MouseUP testen über welche Groubbox er ist und dann dort das Parent setzen..
    ... und ein wenig rechnen mit den Koordianen und Top/Left..

    Aber... ehe du hier gesteinigt wirst.. es ist KEINE Gute Idee ein Button mit der Maus zu verschieben :) Der ist zum Klicken da...
    Als ersten Schritt stelle die AllowDrop-Property beider GroupBoxen auf True. Dies musst Du per Code machen, da der Designer es nicht anbietet. In der Methode, die das MouseDown-Event des Buttons behandelt, nutzt Du die DoDragDrop-Funktion und übergibst den Button und die DragDropEffects. Hier kannst Du DragDropEffects.All nutzen.

    Lege die DragEnter-Events beider GroupBoxen auf eine Methode. In dieser Methode castest Du den Sender in den Typ GroupBox und nutzt die Funktion Data.GetDataPresent, die über die DragEventArgs geliefert wird. Dieser Funktion übergibst Du den Typ Button GetType(Button). Als Rückgabe erhälst Du einen Boolean, der nun angibt, ob wirklich ein Button gedroppt werden soll. Verläuft diese Prüfung positiv, so castest Du das Objekt, das in Data.GetData geliefert wird zum Typ Button. Was nun noch zu tun bleibt, ist abzufragen, ob die GroupBox, die das DragEnter-Event ausgelöst hat, diesen Button beinhaltet. Falls nein => setzte Effect auf DragDropEffects.All. Dies wird auch über die EventArgs geliefert.

    Im Handler des DragDrop-Events (hier sollten wieder beide Events auf eine Methode zeigen) castest Du wieder, wie oben beschrieben, Data.GetData() zum Typ Button und fügst ihn der GroupBox zu (Sender).
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    @sascha_10 Wozu brauchst Du das? Was ist der Plan?
    Wenn Du nicht weißt, was Du programmieren sollst, gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!