RichtextBox, ComboBox, TextBox in *.txt speichern bzw. von *.txt aufrufen

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    RichtextBox, ComboBox, TextBox in *.txt speichern bzw. von *.txt aufrufen

    Hey, ich studiere gerade die wesentlichen Grundlagen von Visual Basic 2008, ohne mich dabei zu überstürzen!


    Vielleicht kann mir einer sagen, wie ich meine TextBox1, TextBox2, TextBox3 und meine RichtextBox1 in einer Textdatei speichern kann, wobei jede Box eine eigene Zeile einnehmen sollte (der Übersicht halber).
    Als erstes schalte die Option Strict auf ON. Das verhindert, dass du dir grundlegende Sachen falsch beibringst (z.b. rechnen mit Strings), was dann zu ominösen fehlern führt. So nun zu deiner Fragestellung:

    deklariere einen String:

    VB.NET-Quellcode

    1. dim Tmp as string = ""


    diesen kannst du nun mit den Inhalten der Textboxen befüllen. Da du für jeden Textboxinhalt eine eigene Zeile beanspruchen möchtest musst du einen Zeilenumbruch anhängen, der Befehl hierfür lautet vbcrlf. Der Operator & verknüpft Zeichenfolgen (nicht den Fehler machen und + verwenden, der ist für Zahlen).

    VB.NET-Quellcode

    1. tmp &= textbox1.text & vbcrlf

    dir ist sicher das &= aufgefallen. Hier mal die schreibweise ohne dieses:

    VB.NET-Quellcode

    1. tmp = tmp & textbox1.text & vbcrlf

    du verstehst? Selbiges gibt es auch für die anderen operatoren, also z.b. +=. einfach etwas herumprobieren

    Die anderen Inhalte fügst du genauso hinzu:

    VB.NET-Quellcode

    1. tmp &= textbox2.text & vbcrlf


    Probleme wirst du bei der RTF-Box bekommen, da der User dort selbst vbcrlf´s reinschreiben kann (neue zeilen eben). Das schreiben in die Textdatei funktioniert dann zwar, das auslesen kann aber Probleme machen. Im zweifel musst du also eine einzelne Datei für die RTF-Box erstellen lassen..
    Glaube aber nicht, dass VB.NET damit an die Grenzen gestoßen ist. Daten können sicherer in Datenbanken (einfach mal nach Posts vom ErfinderDesRades ausschau halten) abgelegt werden, oder in Serialisierten Klassen. Arbeite dich jedoch erstmal in die Grundlagen ein.

    um den String tmp in eine Textdatei zu schreiben gibt es mehrere Varianten. Da du anfänger bist und Streams, etc eher verwirrend sind (behalte es trotzdem mal im hinterkopf) mache es am besten so:

    VB.NET-Quellcode

    1. My.Computer.FileSystem.WriteAllText("c:\a.txt", tmp, False)


    Schon hast du den String in eine Textdatei geschrieben. Der Parameter Append (in meinem Beispiel auf "False" gesetzt) bewirkt, dass die Textdatei komplett neu geschreiben wird und der neue Inhalt nicht einfach an den alten angehängt wird - wenn du nicht verstehst einfach mal probieren^^


    EDIT: du wolltest ja auch noch das einlesen erklärt bekommen. Die Funktion zum schreiben kennst du ja jetzt, dann solltest du die zum lesen schnell ausfindig machen können^^ Um den inhalt wieder auf die textboxen aufzuteilen musst du den String splitten. string.split wäre das stichwort. diese funktion gibt einen array, also eine auflistung, zurück. diese kannst du nun in einer schleife abrufen lassen. Versuche dich da mal selbst dran, ich will ja nicht alles verraten xD
    wenns noch Fragen gibt, schieß los! lg

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

    Speichern von FormInhalten...

    Ich habe nun folgenden Code stehen, der auch wunderbar funktioniert....

    VB.NET-Quellcode

    1. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    2. TB1.Enabled = False
    3. RTB1.Enabled = False
    4. Timer1.Stop()
    5. Button1.Text = "Speichern"
    6. Dim tmp As String = ""
    7. tmp &= TB1.Text & vbCrLf
    8. tmp &= TextBox1.Text & vbCrLf
    9. tmp &= TextBox2.Text & vbCrLf
    10. tmp &= "" & vbCrLf
    11. tmp &= RTB1.Text & vbCrLf
    12. My.Computer.FileSystem.WriteAllText("C:\Historien\Test.txt", tmp, False)
    13. End Sub



    Nun möchte ich gerne anstatt "Test.txt" den Inhalt der Textbox (TB1.Text) als Dateiname...... Ist das denn möglich?

    VB.NET-Quellcode

    1. My.Computer.FileSystem.WriteAllText("C:\Historien\" & Textbox1.Text, tmp, False)
    2. 'oder
    3. System.IO.File.WriteAllText("C:\Historien\" & Textbox1.Text, tmp)


    Wobei das mit Vorsicht zu geniesen ist.
    - Steht nichts in der Textbox wirds ne Exception werfen.
    - Wie findest du die Datei anschließend (über dein Programm) wieder?

    Überleg dir das eventuell nochmal

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten