Listview Datei kopieren

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von manni4545.

    Listview Datei kopieren

    Hi

    habe ein kleines Suchprog. erstellt. Die Ergebnisse werden mir in resultslist (listview) dargestellt

    Das löschen der Datei habe ich hinbekommen. Das mache ich so. Es wird der listview Eintrag sowie auch die Datei gelöscht.

    VB.NET-Quellcode

    1. Private Sub Dateilöschen_Click(sender As Object, e As EventArgs) Handles Dateilöschen.Click
    2. '------------------Anfang löschen einer Datei aus der Listview(resultlist
    3. Select Case MessageBox.Show("Die Ausgewählte Datei wirklich löschen? Die gelöschte Datei befindet sich danach im Papierkorm.", "Datei löschen. Achtung!", MessageBoxButtons.YesNo)
    4. Case Windows.Forms.DialogResult.Yes
    5. If resultsList.SelectedItems.Count > 0 Then
    6. Dim path As String = resultsList.SelectedItems(0).Text
    7. If File.Exists(path) Then
    8. My.Computer.FileSystem.DeleteFile(path,'anfang datei löschen und in den papierkorb verschieben.
    9. Microsoft.VisualBasic.FileIO.UIOption.AllDialogs,
    10. Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin) 'end datei löschen und in den papierkorb verschieben.
    11. resultsList.FocusedItem.Remove()
    12. End If
    13. End If
    14. Case Windows.Forms.DialogResult.No
    15. Return
    16. End Select
    17. '-----------------------Ende löschen einer Datei aus der Listview(resultlist)
    18. End Sub


    Was ich jetzt noch machen möchte, ich möchte die Datei die ich in der resultslist im Toolstrip kopieren danach rechte Maustaste in einen anderen Ordner einfüben.


    VB.NET-Quellcode

    1. Private Sub DateiKopierenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DateiKopierenToolStripMenuItem.Click
    2. If resultsList.SelectedItems.Count > 0 Then
    3. Dim path As String = resultsList.SelectedItems(0).Text
    4. End If


    Habe es schon mit Clipboard versucht ohne erfolg.

    manni4545 schrieb:

    einfüben
    Move() oder Copy()?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Mit Copy() in die Zwischenablage kopieren und danach soll wenn ich die rechte Maustaste drücke ich
    die möglichkeit habe auf Einfügen aus der Zwischenablagen.

    Bisher habe ich es mit SaveFileDialog gemacht.

    VB.NET-Quellcode

    1. Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    2. If resultsList.SelectedItems.Count > 0 Then
    3. Dim path As String = resultsList.SelectedItems(0).Text
    4. If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.Cancel Then
    5. Exit Sub
    6. End If
    7. Try
    8. My.Computer.FileSystem.CopyFile(path,
    9. SaveFileDialog1.FileName)
    10. Catch ex As Exception
    11. MsgBox(ex.ToString)
    12. End Try
    13. End If

    Das ist sicherlich keine gute Lösung.
    @manni4545 Was soll mit dem ClipBoard passieren?
    Bei welcher User-Handlung soll das passieren?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi

    weis nicht ob ich mich richtig ausgedrückt habe.
    mir wird in einer resultslist zb alle *.txt angezeigt.

    Jetzt habe Private Sub DateiKopierenToolStripMenuItem_Click beim rechtsklick erscheint ein Button DateiKopieren
    Jetzt soll die SelectedItems in die zwischenablage kopiert werden.
    Anschließen mache ich rechtsklick und sage Einfügen die kopierte datei kann danach in einen anderen Ordner eingefügt werden.

    Hoffe ich bringe jetzt nicht alles durcheinander. :)
    Bilder
    • resultslist.jpg

      53,17 kB, 1.122×343, 111 mal angesehen
    weis nicht ob ich mich richtig ausgedrückt habe.
    Das kann ich dir beantworten - zumindest von meiner Warte: Nein, hast du nicht.

    Sowas:

    manni4545 schrieb:

    Jetzt habe Private Sub DateiKopierenToolStripMenuItem_Click beim rechtsklick erscheint ein Button DateiKopieren
    ist einfach kein verständlicher Satz.
    Wer darauf antworten will muss ziemlich mutwillig drauflos-raten, was du damit wohl meinen magst.
    Ich versuche es nochmals
    in post6 sieht man meine resultslist.
    Jetzt klicke ich auf resultslist Textdatei1.txt rechte maustaste es erscheint ein ContexMenuStrip
    Dort gibt es Datei kopieren. Jetzt soll mir die Textdate1.txt in die Zwischenablage kopiert werden.
    Jetzt befindet sich die Textdatei1.txt in der zwischenablage. Jetzt öffne ich einen Ordner mache einen rechtsklick und sage einfügen.
    Die Datei wird in diesen ordner kopiert.

    Gehe davon aus, dass man es mit diesem Code hinbekommt darf halt kein Filelist.ToArray sein.

    VB.NET-Quellcode

    1. Dim oDataObject As New DataObject(DataFormats.FileDrop, FileList.ToArray)
    2. Clipboard.SetDataObject(oDataObject)


    Und hier soll der Code rein

    VB.NET-Quellcode

    1. Private Sub DateiKopierenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DateiKopierenToolStripMenuItem.Click
    2. End Sub

    Bilder
    • resultslist2.jpg

      10,29 kB, 198×128, 492 mal angesehen
    @manni4545 Soll mit den markierten Dateien in der SelectedItems-Collection etwas passieren?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    So - jetzt verstanden

    manni4545 schrieb:

    Gehe davon aus, dass man es mit diesem Code hinbekommt darf halt kein Filelist.ToArray sein.
    ja, könnte sein. Was es sein muss, hängt davon ab, wasses derzeit ist.
    Also welchen Datentyp hat FileList?

    Falls du mit dieser Frage Schwierigkeiten hast - gugge Video-Tut: Welchen Datentyp hat das Objekt?

    manni4545 schrieb:

    Gehe davon aus, dass man es mit diesem Code hinbekommt darf halt kein Filelist.ToArray sein.

    VB.NET-Quellcode

    1. Dim oDataObject As New DataObject(DataFormats.FileDrop, FileList.ToArray)
    2. Clipboard.SetDataObject(oDataObject)

    RodFromGermany schrieb:

    Was soll mit dem ClipBoard passieren?
    Du begehst gerade einen riesigen Fehler, indem Du uns Helfern einen mehr oder weniger, in diesem Falle weniger sinnvollen Code präsenierst, ohne das Problem in diesem Kontext beschrieben zu haben.
    Dem @ErfinderDesRades und mir schwebt da möglicherweise etwas vor, womit Du Dein Problem in wenigen Zeilen lösen kannst, sofern das ühaupt Dein Problem ist.
    Genau das wollen und müssen wir zunächst herausarbeiten.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Öm, ich werf mal meinen Lösungsweg in den Raum (programmier ja zur Zeit nen eigenen "Explorer"bzw. etwas ähnliches):

    Hab komplett auf die Zwischenablage verzichtet, weil die mir zu unsicher war. Da geht gern auch mal was verloren wenn man noch andere Sachen da rein packt.

    Daher hab ich nen Modul genommen welches eine ObservableCollection(Of T) enthält und nun als Zwischenablage dient. Dort packe ich dann meine "Dateien" bzw. eigentlich ja meine Kopierten/Ausgeschnittenen Objekte rein. Nun parken die Daten dort so lange, bis das Programm beendet wird oder die Dateien irgendwo eingefügt werden.

    Warum eine ObservableCollection(Of T)?
    Weil teils 2 Explorer gleichzeitig offen sein können um Dateien von A nach B zu verschieben. Daher habe ich das CollectionChaged Event abonniert um die Auflistung der Dateien zu aktualisieren wenn da was ausgeschnitten wurde.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „mrMo“ ()

    Damit habe ich es hinbekommen.

    VB.NET-Quellcode

    1. Private Sub DateiKopierenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DateiKopierenToolStripMenuItem.Click
    2. Me.resultsList.MultiSelect = True
    3. Dim liste(resultsList.SelectedItems.Count - 1) As String
    4. Dim i As Integer = 0
    5. For Each item As ListViewItem In resultsList.SelectedItems
    6. liste(i) = vz & item.Text
    7. i = i + 1
    8. Next
    9. 'Dim copy As New DataObject(DataFormats.FileDrop, liste)
    10. Dim copy As New DataObject(DataFormats.FileDrop, liste)
    11. Clipboard.SetDataObject(copy)
    12. End Sub


    Vielleicht habe ich mich von Anfang an falsch ausgedrückt was ich wollte.