Ich wollte heute mal einen Blick auf "Drag & Drop" werfen und zu diesem Zwecke Farbe aus einem (von zwei) Panels in ein anderes (drittes) Panel kopieren.
Das klappt auch, allerdings nicht so wie ich das gerne hätte.
Erstmal etwas Code:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| private void panel3_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(typeof(Color))) { e.Effect = DragDropEffects.Move; } else { e.Effect = DragDropEffects.None; } }
private void panel3_DragDrop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(typeof(Color))) { panel3.BackColor = (Color)e.Data.GetData(typeof(Color)); } }
private void panel2_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { panel2.DoDragDrop(panel2.BackColor, DragDropEffects.Copy); } }
private void panel1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { panel1.DoDragDrop(panel1.BackColor, DragDropEffects.Copy); } } |
Leider passiert so gar nichts und die Maus zeigt überall einen durchgestrichenen Kreis an. Wenn ich in der obersten Methode den auskommentierten Code wieder einkommentiere findet Drag Und Drop statt, allerdings sofort wenn ich mit der Maus über ein mögliches Ziel fahre, was bei mehreren Zielen recht unpraktisch ist.
Ich würde mich freuen wenn mir jemand sagen kann wo der Fehler liegt.
MfG DoD
EDIT: Habe gerade herausgefunden das die Methode "panel3_DragDrop()" überhaupt nicht aufgerufebn wird...das müsste das Programm doch selber machen, wenn "AllowDrop" auf "True" steht, oder?