Textdatei in Listbox laden und editieren

  • VB.NET

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

    Textdatei in Listbox laden und editieren

    Hallo Community ..

    Ich hab schon gegoogelt und hier im Forum auch schon geschaut, doch nicht das gefunden was ich gesucht habe. Sorry, falls es dieses Anliegen doch schon geben sollte.

    Zu meinem Problem: ich möchte eine Textdatei:

    Zeile1
    Zeile2
    Zeile3
    ...
    in meine Listbox laden. Dies hab ich folgendermaßen versucht (ich bin noch anfänger :( :(

    VB.NET-Quellcode

    1. Dim kunden as string
    2. kunden = My.Computer.FileSystem.ReadAllText (Application.Startuppath & "\kunden\kunden.txt")
    3. kundenform.ListBox1.Items.Add (kunden)


    Nun habe ich aber das Problem, dass die Zeilen in der Listbox hintereinander angezeigt werden und nicht untereinander.
    Wie kann ich die Einträge untereinander anzeigen lassen?!

    Und noch etwas: Wie kann ich Einträge in die Listbox (und somit auch in die Textdatei) hinzufügen oder löschen?!


    Vielen Dank!
    ich würde nicht ReadAllText sondern ReadallLines nehmen...
    da kannste dann die einzelnen Zeilen mit listbox.addrange hinzufügen
    und sowieso

    VB.NET-Quellcode

    1. IO.File.ReadAllLines

    und bitte auch

    VB.NET-Quellcode

    1. IO.Path.Combine

    benutzen
    Wieso überhaupt in eine Listbox?
    Warum nicht in eine Textbox?
    Edit: Achtung Spoiler :D
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    2. TextBox1.Text = IO.File.ReadAllText(IO.Path.Combine(
    3. My.Computer.FileSystem.SpecialDirectories.MyDocuments,
    4. "Test.txt"))
    5. End Sub
    6. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    7. IO.File.WriteAllText(IO.Path.Combine(
    8. My.Computer.FileSystem.SpecialDirectories.MyDocuments, "Test.txt"),
    9. TextBox1.Text)
    10. End Sub

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

    Sieh dir mal den System.IO-Namespace an. Mit ReadAllLines liest du die Datei in ein Stringarray. Jedes Element des Arrays entspricht einer Zeile der Textdatei. Mit Listbox.AddRange() kannst du das Array in einem Rutsch an die Listbox übergeben.
    Zeilen einfügen/löschen geht mit den Methoden der Listbox insert, remove usw.
    Es ist allerdings keine gute Idee/Stil, die Daten in der Listbox zu verwalten. Die Listbox dient, wie alle Steuerelemente, der Darstellung und ggf. Eingabe von Daten, ist also eine Benutzerschnittstelle. Die Daten hält man idR in Auflistungen wie List(Of T) oder Datatables.
    Noch schöner ist die Datenbindung von Tabellen an Steuerelemente wie Datagridview. Hier gibt es zahlreiche Automatismen, die dir allerhand Arbeit abnehmen.

    Fiel Fergnügen

    Vatter

    übrigens: (Application.Startuppath & "\kunden\kunden.txt") ist nicht schön. Schnell schleichen sich Fehler ein. Benutze lieber Path.Combine um Pfade zusammenzusetzen. Da mußt du dich um /\ und Co nicht mehr kümmern.
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Danke schonmal für die Antworten.

    Wieso überhaupt in eine Listbox?

    Warum nicht in eine Textbox?
    Also mit "ReadOnly" ? Dann müsste ich ja für jeden Eintrag eine Textbox nutzen und da die Liste ja erweitert, bzw auch Einträge gelöscht werden sollen, ist das ja Schwachsinn (oder?). Was wäre denn am besten, um die Einträge (also die Kunden im meinem Fall) zu verwalten (also hinzufügen, bearbeiten, löschen)?

    Am besten ich erkläre mal mein vorhaben:
    Ich möchte sozusagen ein Kundenarchiv programmieren, sodass wenn man auf einen Vorhandenen Eintrag klickt, sich unter der Liste Textboxen mit Name, Adresse, Ort usw füllen und man diese bearbeiten kann. In der Liste soll jedoch nur der Name erscheinen.



    Ich werde mir als nächstes mal den System.IO Namespace anschauen.

    Lg xSolution
    Hi,

    wow, stop .. bei deinem Vorhaben würde ich gleich bei Datenbanken ansetzen und das gar nicht erst anfangen, es über Textdateien lösen zu wollen. Viel komfortabler!

    Ansonsten wie meine Vorredner schon sagten, kannst du den Inhalt in ein Stringarray einlesen. Dieses Array in einer Schleife durchlaufen und einfach nur noch ListBox1.Items.Add(dein_array(i)) schreiben, fertig.


    Link :thumbup:
    Hello World
    Datenbanken wäre echt eine gute Idee...

    Damit habe ich mich noch nicht beschäftigt, werde ich mir dann mal aneignen..
    Jetzt habe ich aber doch eine Verständnisfrage:
    Wenn ich mit meinem VB Programm in eine Datenbank schreiben will, dann muss die doch auch irgendwo vorhanden sein. Das einzige mal als ich was mit Datenbanken gemacht habe, war als ich mit XAMPP rumgespielt habe.. Muss dann der Nutzer des programms ebenfalls so eine Datenbank besitzen? Oder geht das auch anders? Ich denke mal dass es anders geht, ich werde mich auch auf jeden Fall mal reinlesen^^.

    Danke dir!
    ich werde mich auch auf jeden Fall mal reinlesen^^

    Zuerst das, und danach kannste dann Fragen stellen. Denn die die du eben gestellt hast werden schnell von selbst beantwortet sein, sobald du dich ein wenig reingelesen hast. Versprochen ;)


    Link :thumbup:
    Hello World

    Don_Batisto schrieb:

    als Anfänger würde ich eher zur DataGridView gehen und den Inhalt in einer XML speichern.
    Das ist definitiv einfacher als ne Datenbank aufzubauen, den Inhalt von dort auszulesen / zu editieren / zu löschen!

    ein Datagridview ist ein AnzeigeControl .. und wozu so kompliziert?
    typisiertes DataSet, fertig.. bringt alles zum lesen und speichern mit... sind 2 oder 3 Zeilen Code...
    GUGGE:
    home.arcor.de/eckardahlers/Pro…gs/DBProgrammerTipps.html
    Datenbank in 10 min.. etc...
    Am besten ist es, die Datenbank an sich zunächst wegzulassen. Schau mal die Tuts von ErfinderdesRades durch:
    Daten laden, speichern
    DB-Programmierung ohne Datenbank
    Das typisierte Dataset läßt sich äußerst komfortabel als XML speichern. Außerdem ist eine Erweiterung mit Tabellenbeziehungen (z.B. komplettes Bestellsystem) relativ einfach möglich.

    Fiel Fergnügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    du brauchst kein XML, das rum gespiele damit macht keinen Sinn...
    Schau hier im Forum nach @ErfinderDesRades: und typisiertes DataSet, schau auf der Seite die ich dir gezeigt hab, mach das Tut Datenbank in 10 Mnuten, un dann is schon alles erledigt. Was du vorhast ist nun mal Datenbänkerei wenn auch ohne große Datenbank und dazu sollte man nicht mit XML rum fummeln!