C# Drag & Drop zu einem Punkt außerhalb des Forms

Registriert
Mai 2007
Beiträge
150
Hallo Leute,

Ich habe ein Programm mit einem DataGridView. jede Zeile repräsentiert eine Datei. Nun möchte ich, das wenn man eine Zeile per Drag & Drop zu einem Punkt außerhalb des Forms in den Windows Explorer zieht, das die Datei in den entsprechenden Ordner im Explorer kopiert wird.

Wie kann ich einen Drop erlauben auf Positionen außerhalb des Forms?

lg Stefan
 
Auf den ersten Gedanken würde ich sagen, dass du der Drag-Funktion ein File-Objekt übergeben musst. Der Explrer müsste dann von alleine erkennen, was da auf ihn droppt.
 
Danke für den Tipp, ich habe es nun so realisiert:

Code:
a.DoDragDrop(new DataObject(DataFormats.FileDrop, a.SelectedRows[0].Cells[5].Value.ToString()), DragDropEffects.Copy);

Wobei a ein DataGridview ist und a.SelectedRows[0].Cells[5].Value.ToString()) die Datei URL darstellt. Der Mauszeiger verändert sich auch entsprechend, wenn man eine Row in den Explorer zieht, alles sieht so aus als würde es klappen, aber es kommt keine Datei an. Woran kann das liegen?

lg Stefan
 
Übergebe mal statt der Datei-URL ein File Object bzw. File Stream, alternativ ein SafeFileHandle.
Wenn der Explorer einen String empfängt, kann er damit doch nichts anfangen. Er denkt, du willst Text einfügen, was ja so nicht geht.
 
Zuletzt bearbeitet:
Hallo,
Habe nun rausbekommen, das es doch ausreicht, den Dateipfad als String Array anzugeben. Vllt. hilft es ja irgendwann noch jemand anderem weiter:

Code:
string[] fileList = new string[a.SelectedRows.Count];

for (int i = 0; i < a.SelectedRows.Count; i++)
{
    fileList[i] = mymusic + "\\records\\" + a.SelectedRows[i].Cells[5].Value.ToString();
}
a.DoDragDrop(new DataObject(DataFormats.FileDrop, fileList), DragDropEffects.Copy);
 
Zurück
Oben