Autor Beitrag
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 25.04.04 23:11 
Dateien (und Ordner) per Drag 'n Drop empfangen
Um Dateien (und Ordner) per Drag 'n Drop aus dem Explorer auf eine Komponente des Programmes zu Empfangen, sind folgende Schritte notwendig:

(1) Bei der entsprechenden Komponente muss "AllowDrop" auf "true" gesetzt werden
(2) Im DragEnter-Event der Komponente ist folgender Code unterzubringen (hier am Beispiel einer Listview):

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TMainForm.fileList_DragEnter(sender: System.Object; e: System.Windows.Forms.DragEventArgs);
begin
  if (e.Data.GetDataPresent(DataFormats.FileDrop)) then //Werden auch wirklich Dateien gezogen?
    e.Effect := DragDropEffects.Copy //Jeder Effekt ist möglich, nur nicht "None", das würde blockieren
  else
    e.Effect := DragDropEffects.None;
end;


(3) Um nun an die Dateien zu kommen, platziert man noch folgenden Code im OnDragDrop-Event (auch am Beispiel einer ListView):
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TMainForm.fileList_DragDrop(sender: System.Object; e: System.Windows.Forms.DragEventArgs);
type strArr = Array Of String//brauchen wir für den Cast
var files : strArr;
    i : Integer;
begin
  files := strArr(e.Data.GetData(DataFormats.FileDrop));
  //hier stehen jetzt alle Dateien bzw. Ordner drin, die gezogen wurden
  for i:=0 to High(files) do
  begin

    //Handelt es sich um einen Ordner?
    if (System.IO.FileAttributes.Directory
    and System.IO.File.GetAttributes(files[i])) = System.IO.FileAttributes.Directory
    then MessageBox.Show('Verzeichnis: '+files[i])
    else MessageBox.Show('Datei: '+files[i]);
  end;
end;


So fertig. Anstatt der MessageBoxes kann man natürlich nun mit den Ordner und Dateien machen, was man will.
Moderiert von user profile iconjasocul: Beitrag geprüft am 05.05.2006
[meta]Drag Drop .NET Dateien Ordner[/meta]

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".


Zuletzt bearbeitet von Christian S. am Mo 26.04.04 22:18, insgesamt 1-mal bearbeitet