Listview Datei löschen

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

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von mrMo.

    Listview Datei löschen

    Nabend

    Beim durchsuchen eines ordners werden mir die gefundenen Dateien
    in einer Listview angezeigt.

    Es soll jetzt ein listview ausgewählt und beim klicke auf einen Button auch die datei gelöscht werden.

    VB.NET-Quellcode

    1. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    2. For Each Item As ListViewItem In resultsList.SelectedItems
    3. resultsList.Items.Remove(Item)
    4. Next
    5. End Sub


    So löscht er mir ja nur das listview item und nicht auch noch die datei.

    komme da einfach nicht weiter damit er mir auch die ausgewählte datei löscht
    Hallo

    Schau dir mal den Namespace System.IO an.
    Dort gibt er für die Klasse File die Prozedur Delete.

    Wenn du nicht weist wie man diese Anwendet google bitte mal. "vb.net delete file".

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Morgen

    kriegs einfach nicht hin.

    VB.NET-Quellcode

    1. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    2. My.Computer.FileSystem.DeleteFile(
    3. "C:\Users\manni\Desktop\meinersterordner\textdokument.txt",
    4. FileIO.UIOption.OnlyErrorDialogs,
    5. FileIO.RecycleOption.SendToRecycleBin,
    6. FileIO.UICancelOption.ThrowException)
    7. End Sub


    so geht es aber da muss ich den pfad der zu löschenden Datei angeben.

    Stehe da auf dem Schlauch. Ich möchte ja einen markierten Eintrag in der Listview markieren und die Listview mit der
    dazugehörigen Datei löschen :(
    In deinem ListView musst du eben den Dateinamen der gewählten Datei ermitteln. Dann den Eintrag in dem ListView und die Dateinlöschen. Ich arbeite nur nicht mit dem ListView, kann dir also keinen Code liefern...

    Evtl. Hilft dir das weiter: Listview - Wie bekomme ich die ausgewählten Daten?
    "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
    Moin

    manni4545 schrieb:

    kriegs einfach nicht hin.

    Hast du meinen Post gelesen? Ne oder? My.Computer.FileSystem.DeleteFile is schon mal nicht gut. Man sollte den My Namespace vermeiden.
    Ich habe dir geschrieben du sollst den Namespace System.IO verwenden. Hättest du das beherzigt hättest du in der IDE "System.IO." eingegeben und gesehen das es hier eine Prodedur mit dem Namen Delete gibt.

    manni4545 schrieb:

    da muss ich den pfad der zu löschenden Datei angeben.

    Du wirst ja im ListView entweder den ganzen Pfad drinnen stehen haben oder den Dateinamen richtig? Das hast du uns noch nicht verraten. Wie füllst du denn dein ListView?
    Das können wir ja nicht wissen oder?

    manni4545 schrieb:

    Ich möchte ja einen markierten Eintrag in der Listview

    Wie man die durchgehst hast du ja bereits in Post #1 richtig. Jetzt kombiniere dies mit dem neu gelernten und siehe da. Du bist weiter.
    Ich empfehle dir beim durchgehen durch die schleife erstmal einen Haltepunkt zu setzen und zu Debuggen.
    Schau dir das an und LERNE es.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    @Nofear23m

    Erstmal Danke für die Hilfe.
    In der Listview wird mir der ganze Pfad angezeigt. Siehe Bild.

    Was ich auch hinbekommen habe, wenn ich in der Listview (resultlist) einen doppelklick mache öffnet er mir die Datei

    VB.NET-Quellcode

    1. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    2. If resultsList.SelectedItems.Count > 0 Then
    3. Dim path As String = resultsList.SelectedItems(0).Text
    4. If File.Exists(path) Then
    5. Try
    6. Dim startInfo As New ProcessStartInfo()
    7. startInfo.FileName = path
    8. startInfo.Arguments = ""
    9. Dim process As New Process()
    10. process.StartInfo = startInfo
    11. process.Start()
    12. Catch e1 As Exception
    13. End Try
    14. End If
    15. End If
    16. End Sub


    Das muss ich doch auch hinbekommen damit er mir das Item und die Datei löscht.
    Irgendwie ist heute nicht mein Tag...
    Bilder
    • listview.jpg

      21,36 kB, 1.127×112, 106 mal angesehen

    manni4545 schrieb:

    enn ich in der Listview (resultlist) einen doppelklick mache öffnet er mir die Datei

    Eigendlich nicht. Eher beim Click. ;)

    Ich kann mich nur wiederholen. Anstatt hier gleich zu Antworten lese meinen Post nochmals.
    Du kannst den Link in der Zeit jetzt gar nicht durchgenommen haben. Unmöglich.
    Wenn du keine Eigeninitiative zeigst, wird hier auch jeder auf stur schalten. Wenn du das was dir jemand sagt nicht beherzigst, wirst du nie weiterkommen.

    Sollen wir dir den fertigen Code Posten? Wenn du nichts lernen willst sag das einfach und wir sparen uns alle viel Zeit, gerne nimmt die die Community Zeit dir etwas zu lernen, wenn du nicht mal ein kleines Tut durchlesen und versuchen zu verstehen gedenkst wird das allerdings nix.

    Also, zurück auf Anfang.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Jesses, da haste doch die Lösung um den Pfad zu ermitteln. Musst doch nur noch 1 und 1 zusammen zählen. In dem Code den du in diesem Thread gepostet hast steht nahezu alles was du brauchst.

    Offensichtlich haste deinen Code aber nicht verstanden. Und das ist dein eigentliches Problem (Hier nen Smily :) damit es nicht Böse klingt)

    Das hier brauchst zum Datei Löschen: System.IO.File.Delete(String)
    "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
    Hi @mrMo

    Ich weis, dass es von euch nicht böse gemeint ist ;)
    Wenn man aber Stundenlang nach einer Lösung sucht und den weg nicht findet.... ich versuch die Lösung ja erst alleine zu finden bevor ich frage.
    Manchmal habe ich halt keine Geduld mehr.
    Aber durch deinen Anstupser habe ich es hinbekommen.

    Hab es so gemacht

    VB.NET-Quellcode

    1. Select Case MessageBox.Show("Die Ausgewählte Datei wirklich löschen?", "Datei löschen", MessageBoxButtons.YesNo)
    2. Case Windows.Forms.DialogResult.Yes
    3. 'code für Ja
    4. If resultsList.SelectedItems.Count > 0 Then
    5. Dim path As String = resultsList.SelectedItems(0).Text
    6. If File.Exists(path) Then
    7. System.IO.File.Delete(path)
    8. resultsList.FocusedItem.Remove()
    9. End If
    10. End If
    11. Case Windows.Forms.DialogResult.No
    12. 'Code für Nein
    13. Return
    14. End Select


    Das tut was ich möchte die Datei wird gelöscht.
    Wolltest du nicht alle markierten löschen. Die schleife hättest du wie schon erwähnt in deinem eigenem ersten Post. Ich bin verwirrt.
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    @manni4545 Vor kurzem hatten wir das Problem, dass .SelectedItems(0) und .FocusedItem nicht notwendig identisch sind.
    Nimm deshalb stets .SelectedItems(0).
    Und
    Du musst nicht mit Select Case arbeiten, um einen von zwei möglichen Fällen zu ignorieren, da genügt ein If.
    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!
    Eieieie schwere Geburt ;)

    Schön, dass du nun weiter gekommen bist. Jedoch empfehle ich dir dringend, dir die Grundlagen Schleifen und Datentypen sowie Debuggen (nochmal) anzusehen. Hierzu eignen sich kleine Testprojekte, die den Focus auf einem Thema haben. Ein ganzen Programm zu schreiben, was die jeweiligen Themen beinhaltet, birgt die Gefahr den Focus auf das eigentliche Thema zu verlieren.
    "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