Laden...

Drag Quelle bei Drop erhalten

Erstellt von mcdt vor 12 Jahren Letzter Beitrag vor 12 Jahren 497 Views
Thema geschlossen
M
mcdt Themenstarter:in
55 Beiträge seit 2011
vor 12 Jahren
Drag Quelle bei Drop erhalten

Hallo,

ich möchte gerene über Drag& Drop Objekte erstellen.
Dabei soll das "orgianal", also das Drag-Objekt erhalten bleiben, und beim Drop lediglich eine "Kopie" des Orginales erstellt werden.

Das ganze gab es schonmal hier im Forum -> Drag and Drop - Drag Quelle behalten

Die Antwort war, das ein Objekt nur einmal exestieren kann und zum verfielfältigen eine Kopie erstellt werden soll.

Das ganze habe ich versucht, allerdings wird trotzdem immer mein "Orginal" geölscht.

Mein Ziel: Ein Button auf einen 2ten Button ziehen, wobei beim Drop eine Kopie des ersten Button erstellt werden soll.

Hier mein Code:


void button2_DragDrop(object sender, DragEventArgs e) {
Button copy = new Button();
copy = (Button)e.Data.GetData(typeof(Button));
copy.Location = new Point(((Button)sender).Location.X ,((Button)sender).Location.Y + ((Button)sender).Height);
this.Controls.Add(copy);
}

mfg

G
538 Beiträge seit 2008
vor 12 Jahren

Ich erkläre dir deinen Code:


//Erzeuge eine neue Instanz der Klasse Button und speichere in der Variable "copy"
Button copy = new Button();

//Nimm die Instanz aus den Drag Daten und speichere diese in der Variable "copy"
copy = (Button)e.Data.GetData(typeof(Button));

Merkst du etwas? 😉

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

Hinweis von herbivore vor 12 Jahren

Dass du keine Kopie erstellst, hat Grumbler85 gezeigt. Dass man so nicht kopieren kann, sondern nur die Referenz auf das gerade neu erzeugte Objekts überschreibt, fällt allerdings unter [Hinweis] Wie poste ich richtig? Punkt 1.1.1. Lies am besten nochmal das Kapitel über Referenzen.

Stattdessen musst du den Button neu erzeugen und dann alle relevanten Werte aus dem alten Button in den neuen Button übertragen.

Thema geschlossen