ListBox als txt speichern

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

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von Morrison.

    ListBox als txt speichern

    Hallo,
    ja ich weiss es gibt schon ein Thema dazu dennoch hier meine verständnissfrage:

    wie kann ich denn nun eine listbox (buttonclick) als txt speichern mit DirectoryInfo.GetFiles()
    sowie

    Und trennt Daten von Controls.

    Also füllt nicht die .GetFiles() direkt in die Listbox, sondern füllt eine List(Of FileInfo) damit ab, und bindet die Listbox daran.


    danke
    Iteriere durch die Items, schnapp Dir 'ne List(Of String) und füge die Items da rein. (ToString, denn das sind lauter Objects). Einfacher geht es natürlich mit Linq:

    VB.NET-Quellcode

    1. ListBox.Items.Cast(Of String)()


    Dann kannst Du diese serialisieren oder was auch immer.
    Das, was Du da mit den FileInfos beschreibst, hat doch eher mit dem Laden zu tun, oder? Was steht denn in der ListBox?

    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 :!:
    Du möchtest den Inhalt einer ListBox in eine Textdatei speichern??

    Oder gehts Dir um des Binding?

    erstmal Liste erstellen und ans ListView binden:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim _list As New List(Of String)
    2. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    3. Dim files() As FileInfo = New DirectoryInfo("C:\Windows\").GetFiles("*.ini")
    4. For Each file As FileInfo In files
    5. _list.Add(file.Name)
    6. Next
    7. ListBox1.DataSource = _list
    8. End Sub


    Dann die Liste als TextDatei speichern:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim fPath = "C:\Temp\test.txt"
    3. System.IO.File.WriteAllLines(fPath, _list)
    4. End Sub

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

    @Trade also ich habe einfach eine ListBox mit zeilenweise Stichwörtern.
    Durch einen buttonclick soll das in einem Pfad als Txt gespeichert werden.
    Beim Laden des Formulars soll diese txt Datei dann wieder in der ListBox angezeigt werden
    @alle was das mit speichern oder befüllen oder directoryinfo.getfiles zu tun hat weiss ich nicht ; /

    @Morrison

    VB.NET-Quellcode

    1. Dim _list As New List(Of String)
    2. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    3. Dim files() As FileInfo = New DirectoryInfo("C:\Windows\").GetFiles("*.ini")
    4. For Each file As FileInfo In files
    5. _list.Add(file.Name)
    6. Next
    7. ListBox1.DataSource = _list
    8. End Sub


    Okay habe das gemacht aber da werden dann diese .ini Dateien an der ListBox geladen, die will ich da eigentlich nicht sehen ! : )
    Hmm, k..also..
    ..erstmal neue List(of String) erstellen und die ListBox drinne speichern und als TextFile abspeichern:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim _list2 As New List(Of String)
    3. For i = 0 To ListBox1.Items.Count - 1
    4. _list2.Add(CStr(ListBox1.Items(i)))
    5. Next
    6. Dim fPath = "C:\Temp\test.txt"
    7. System.IO.File.WriteAllLines(fPath, _list2)
    8. End Sub


    Dann kann man beim Programmstart diese Datei in eine List(Of String) laden und an die ListBox binden:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. If System.IO.File.Exists("C:\Temp\test.txt") Then
    3. Dim _list3 As New List(Of String)
    4. _list3 = System.IO.File.ReadAllLines("C:\Temp\test.txt", System.Text.Encoding.UTF8).ToList()
    5. ListBox2.DataSource = _list3
    6. Else
    7. MessageBox.Show("Datei nicht vorhanden", "Wo ist die Datei??")
    8. End If
    9. End Sub

    vereinfacht (aber zu faul, um richtig zu benamen):
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim _list3 As List(Of String)
    2. Dim fi As New FileInfo("C:\Temp\test.txt")
    3. Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. If fi.Exists Then
    5. _list3 = File.ReadAllLines(fi.FullName).ToList()
    6. ListBox2.DataSource = _list3
    7. Else
    8. MessageBox.Show("Datei nicht vorhanden", "Wo ist die Datei??")
    9. End If
    10. End Sub
    11. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    12. File.WriteAllLines(fi.FullName, _list3)
    13. End Sub

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

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. ListBox1.Items.Add(TextBox2.Text)
    3. End Sub


    So zu der oben besagten listbox gibt es eine Textbox. Das Wort der TextBox wird normalerweise in der ListBox übernommen (Buttonclick)

    Jetzt kommt aber der Fehler:

    Ein Ausnahmefehler des Typs "System.ArgumentException" ist in System.Windows.Forms.dll aufgetreten.

    Zusätzliche Informationen: Die Items-Auflistung kann nicht geändert werden, wenn die DataSource-Eigenschaft festgelegt ist.

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

    Visual_Prog schrieb:

    So zu der oben besagten listbox gibt es eine Textbox. Das Wort der TextBox wird normalerweise in der ListBox übernommen (Buttonclick)

    Ich habe dir eine Testsolution angehängt, wo du deinen Inhalt der Listbox mittels Settings abspeichern könntest - ist halt eine andere Möglichkeit der Datenhaltung.
    Deine Eingaben via TextBox und Button-Click werden beim Schließen der Anwendung automatisch abgespeichert.
    Beim Öffnen der Anwendung werden die Daten wieder geladen und in der Listbox angezeigt.
    Guck's dir einmal an...
    Dateien
    • TestListbox00.zip

      (12,27 kB, 146 mal heruntergeladen, zuletzt: )
    oh interessant
    ich hab das jetzte mal gemacht dass es zwar ganz normal als txt gelesen wird

    VB.NET-Quellcode

    1. ListBox1.Items.AddRange(System.IO.File.ReadAllLines("Pfad"))


    aber als List gespeichert wird

    VB.NET-Quellcode

    1. Private Sub txt_Click(sender As Object, e As EventArgs) Handles Button3.Click
    2. Dim Pfad As String = "Pfad"
    3. Dim _list2 As New List(Of String)
    4. For i = 0 To ListBox1.Items.Count - 1
    5. _list2.Add(CStr(ListBox1.Items(i)))
    6. Next
    7. System.IO.File.WriteAllLines(Pfad, _list2)
    8. End Sub


    Werde mir aber eure Vorschläge nochmal durchlesen, muss jetzt aber gerade los, Programm klappt jedenfalls schon mal supper :)