Durch Drag und Drop können Objekte mit der Maus markiert und in die gleiche oder einer andere Anwendung gezogen werden.
Dieser Tipp macht macht unsere Listbox empfänglich für Dateien und Ordner. Wir benötigen als erstes eine leere Form, mit einer Listbox. Die Listbox erhält den Namen “listbox1″, die Form den Namen “Form1″. Die “AllowDrop” Eigenschaft der Listbox kann zur Laufzeit oder in der Entwicklungsumgebung als Eigenschaft hinterlegt werden. Mit dieser Eigenschaft wird festgelegt ob das Steuerelement grundsätzlich Daten akzeptiert, welche vom Benutzer darauf gezogen werden. In der “Form1_Load” Funktion richten wir noch zusätlich die Handler für die Ereignisse DragOver und DragDrop ein.
C# CODE
1 2 3 4 5 6 7 8 | ... private void Form1_Load(object sender, EventArgs e) { listBox1.AllowDrop = true; listBox1.DragOver += new DragEventHandler(listboxOnDragOver); listBox1.DragDrop += new DragEventHandler(listboxOnDragDrop); } ... |
Im DragOver Ereignis wird geprüft ob es sich bei den übergebenen Daten um “FileDrop” Daten handelt. Wenn die Daten OK sind wird die “Effect”-Eigenschaft der Listbox gesetzt. Ich überprüfe hier nicht ob es sich um eine “Move” oder “Copy” Aktion handelt, da die Listbox die übergebenen Daten nur auflisten soll.
C# CODE
1 2 3 4 5 6 7 | ... void listboxOnDragOver(object obj, DragEventArgs dea) { if (dea.Data.GetDataPresent(DataFormats.FileDrop)) dea.Effect = DragDropEffects.Move; } ... |
Im DragDrop Ereignis werden alle übergebenen Dateien und Ordner in die Listbox eingefügt, nachdem nochmals das Datenformat überprüft wurde.
C# CODE
1 2 3 4 5 6 7 8 9 10 | ... void listboxOnDragDrop(object obj, DragEventArgs dea) { if (dea.Data.GetDataPresent(DataFormats.FileDrop)) { string[] dateien = (string[])dea.Data.GetData(DataFormats.FileDrop); listBox1.Items.AddRange(dateien); } } ... |
Tags: drag drop