Ordner und Dateien in ListView

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

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Marceliboy.

    Ordner und Dateien in ListView

    Ich hab mal ne Frage:
    ich möchte mir in einem ListView Dateien und Ordner von meiner Festplatte anzeigen.
    bisher habe ich:

    VB.NET-Quellcode

    1. For Each dateien As String In ListView1.Items
    2. My.Computer.FileSystem.GetFiles("C:\MarcelSoftware")
    3. ListView1.Items.Add(dateien)
    4. Next


    mir werden aber nur die Dateien angezeigt. Ok klar heißt ja auch .GetFiles aber wenn ich ne das gleiche mit .GetDirectories mache wird bei mir immer noch nichts angezeigt.
    Was wird das denn? Durch ListView.Items iterieren, wo die Items ja schon bestehen und dann nochmal hinzufügen? :D Zudem kannste ja nicht einfach ​ListViewItem als ​String behandeln. Hast Du Dich da vielleicht verschrieben?
    Kenne den My-Namespace nicht, aber den solltest Du eh vermeiden und stattdessen System.IO verwenden. Damit ist es auf jeden Fall ganz leicht und da kannste auch recht schön LINQ-Extensions und alles anwenden.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    ich hab das ehrlich gesagt von irgend einer Seite aus den tiefen des Internets rauskopiert.
    Aber wenn der Ansatz falsch ist, dann korrigiert mich bitte.

    PS. ich weiß,dass copy & paste ziemlich dumm ist
    Hm, macht ja gar keinen Sinn. Ich würde sowas in der Art machen:

    VB.NET-Quellcode

    1. For Each file In New DirectoryInfo("Pfad").EnumerateFiles()
    2. ListView1.Items.Add(file.FullName) 'Oder nur Name, je nachdem, wie Du es brauchst.
    3. Next


    Könnte man noch so lösen:

    VB.NET-Quellcode

    1. ​ListView1.Items.AddRange(New DirectoryInfo("Pfad").EnumerateFiles().Select(Function(item) New ListViewItem(item.FullName)))


    Dann spart man sich die Schleife und hat 'nen Einzeiler. Sollte so irgendwie funktionieren, aber keine Garantie, ich bin nur noch mit C# unterwegs, wenn ich .NET benutze.
    Das ist jetzt übrigens nur für Deinen Fall. Ob man das auch anders lösen könnte, dass es noch besser wäre, liegt in Deiner Hand. ;)

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Die Frage ist, muss es nen ListView sein?
    Nen DataGridView!!! (nicht Dataset wie zuerst geschrieben XD) ist hierfür wie gemacht.
    Als Beispiel:
    Zieh dir nen DataGridView auf die Form und nenn es mal DataGridView1 (bzw. lass es so benannt)
    Dann ne TextBox druff (auch TextBox1)
    und dann nen Button dazu.
    In den Button_Click dann folgendes:

    VB.NET-Quellcode

    1. If Not System.IO.Directory.Exists(TextBox1.Text) Then Return 'Prüfen ob der Pfad in der TextBox existiert
    2. DataGridView1.DataSource = New System.IO.DirectoryInfo(TextBox1.Text).GetFiles("*", System.IO.SearchOption.AllDirectories)
    3. DataGridView1.RowHeadersVisible = False 'Optional. Sieht nur schicker aus, wie ich finde
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D