Iceman346 Geschrieben 13. Mai 2008 Teilen Geschrieben 13. Mai 2008 Ich bastel momentan mal wieder und versuche folgendes hinzukriegen: In meinem Programm ist eine ListBox, welche den Inhalt eines Verzeichnisses auflistet. Über Drag&Drop soll man nun Dateien in das Verzeichnis kopieren können und auch aus diesem Verzeichnis rausziehen können. Ersteres klappt bereits problemlos, dass man Dateien über die Listbox wieder aus dem Verzeichnis rausziehen kann kriege ich aber nicht hin. Ich versuchs momentan so:Private Sub ListBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown If e.Clicks = 1 And e.Button = Windows.Forms.MouseButtons.Left Then ListBox1.DoDragDrop(vz & "\" & ListBox1.SelectedItem, DragDropEffects.Copy) End If End Sub aber damit krieg ich zwar nen entsprechenden Mauszeiger beim Rausziehen, aber "Fallenlassen" kann ich die Datei nirgends. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 13. Mai 2008 Teilen Geschrieben 13. Mai 2008 aber damit krieg ich zwar nen entsprechenden Mauszeiger beim Rausziehen, aber "Fallenlassen" kann ich die Datei nirgends. natürlich musst du in den entsprechenden controls einen event definieren, der sich für genau dieses zuständig fühlt AllowDrop, DragEnter und DragDrop wären hier ein ansatz. s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Iceman346 Geschrieben 13. Mai 2008 Autor Teilen Geschrieben 13. Mai 2008 natürlich musst du in den entsprechenden controls einen event definieren, der sich für genau dieses zuständig fühlt AllowDrop, DragEnter und DragDrop wären hier ein ansatz. Es soll halt nicht auf das Programm selber wieder gezogen werden sondern auf die Windows Oberfläche. Ergo: In dem Fenster ist ne Dateiliste, daraus klickt man eine an, zieht sie raus und kann sie dann auf dem Desktop ablegen. Mit dem Eintrag:ListBox1.DoDragDrop(New DataObject(DataFormats.FileDrop, vz & "\" & ListBox1.SelectedItem), DragDropEffects.Copy) Krieg ich auch nen entsprechendes Symbol, sieht also so aus als könnte man kopieren, aber wenn ich die Maustaste loslasse passiert nichts. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
HJST1979 Geschrieben 14. Mai 2008 Teilen Geschrieben 14. Mai 2008 Über Drag&Drop soll man nun Dateien in das Verzeichnis kopieren können und auch aus diesem Verzeichnis rausziehen können. Ersteres klappt bereits problemlos, dass man Dateien über die Listbox wieder aus dem Verzeichnis rausziehen kann kriege ich aber nicht hin. Hi könntest du deinen Code "Dateien in das Verzeichnis kopieren" posten, so etwas könnte ich auch gebrauchen. Wäre Super, DANKE Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Iceman346 Geschrieben 14. Mai 2008 Autor Teilen Geschrieben 14. Mai 2008 Hi könntest du deinen Code "Dateien in das Verzeichnis kopieren" posten, so etwas könnte ich auch gebrauchen. Klar, nutze momentan aber nen ListView Element. Bei der ListBox ändert sich aber am Code, außer den Handles, eigentlich nichts. Private Sub ListView1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListView1.DragEnter If e.Data.GetDataPresent(DataFormats.FileDrop) Then e.Effect = DragDropEffects.Copy End If End Sub Private Sub ListView1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListView1.DragDrop e.Effect = DragDropEffects.Copy If e.Data.GetDataPresent(DataFormats.FileDrop) Then Dim Dateien() As String Dateien = e.Data.GetData(DataFormats.FileDrop) For Each line As String In Dateien If Path.GetExtension(line) = ".xml" Or Path.GetExtension(line) = ".XML" Then File.Copy(line, vz & Path.GetFileName(line)) End If Next aktualisieren() End If End Sub Der Code ist jetzt so geschrieben, dass nur xml Dateien kopiert werden, nimmst du die "If Path.GetExtension" Anweisung raus wird alles kopiert. In der Variable vz steht das Zielverzeichnis drin. Die Funktion "aktualisieren()" sorgt dafür, dass die Dateien auch dargestellt werden, sieht so aus: Private Sub aktualisieren() ListView1.Items.Clear() If Directory.Exists(vz) Then For Each line As String In Directory.GetFiles(vz) If Path.GetExtension(line) = ".xml" Or Path.GetExtension(line) = ".XML" Then ListView1.Items.Add(Path.GetFileName(line)) End If Next End If End Sub Für das Problem des Rausziehens hab ich aber immer noch keine Lösung, wenn da wer Ideen hat immer her damit Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
HJST1979 Geschrieben 14. Mai 2008 Teilen Geschrieben 14. Mai 2008 Super dankeschön !! KAnn ich gut für mein Projekt gebrauchen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Faustenator Geschrieben 16. Mai 2008 Teilen Geschrieben 16. Mai 2008 Ich hab zwar auch nen Moment gebraucht, allerdings ist die Lösung nun erschreckend kurz... Du musst es nur noch von C# nach VB portieren Zum Beispiel: Ich bin auch mal von einer ListView ausgegenagen und der Vermutung das Du eventuell Dateien kopieren magst. (Für andere Datenformate ist das ganze aber ähnlich...) Du brauchst nen Eventhandler für das Ereignis "ItemDrag" private void listView1_ItemDrag(object sender, ItemDragEventArgs e) { [INDENT]DataObject obj = new DataObject(DataFormats.FileDrop, new string[] { "C:\\test.txt" }); DoDragDrop(obj, DragDropEffects.Copy); [/INDENT] } Das sorgt dafür, dass wenn Du Dein Element in den Explorer ziehst, die angegeben Datei dortin kopiert wird. Das String-Array ist übrigens nötig, nen einfacher String der den Dateinamen enthält reicht nicht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Iceman346 Geschrieben 16. Mai 2008 Autor Teilen Geschrieben 16. Mai 2008 (bearbeitet) Du bist nah dran mein persönlicher Held zu werden Hab das ganze nu in VB implementiert, jetzt krieg ich aber immer die Fehlermeldung, dass die Datei nicht kopiert werden kann weil die Quelldatei nicht gelesen werden kann. Und nein, die Datei ist natürlich weder woanders geöffnet, noch schreibgeschützt oder versteckt oder sonstwas. Edit: Argl, eigener dummer Fehler. Hab vergessen, dass im ListView natürlich nur der Dateiname steht und nicht der Pfad. Ergo schnell noch den Pfad drangekittet und nu funktionierts. Du bist hiermit mein persönlicher Held Der Code sieht so aus für die die es interessiert: Private Sub ListView_ItemDrag(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles ListView1.ItemDrag Dim liste(ListView1.SelectedItems.Count - 1) As String Dim i As Integer = 0 For Each item As ListViewItem In ListView1.SelectedItems liste(i) = vz & item.Text i = i + 1 Next Dim obj As New DataObject(DataFormats.FileDrop, liste) DoDragDrop(obj, DragDropEffects.Copy) End Sub Bearbeitet 16. Mai 2008 von Iceman346 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
HJST1979 Geschrieben 19. Mai 2008 Teilen Geschrieben 19. Mai 2008 Hei danke, ihr seid beide meine pers. Helden *G* Bis bald mal wieder hier im Forum *G* Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.