none
Alle textboxen in text datei speichern dann Text aus text datei in texboxen laden RRS feed

  • Frage

  • Hallo

    Ich will wenn man, einen Button drückt, dass es den Text aller textboxen in eine text datei lädt.

    und wenn man einen anderen Button drückt, es genau wieder den Text aus der text datei nimmt und wieder in die gleiche textbox tut von der man den text in in die text datei geladen hat.

    Ich brauche dies um ein Formular zu speichern, und dann später wieder zu laden.

    Das formular ist eher gross mit etwa 20 textboxen.

    Samstag, 9. Februar 2013 13:46

Antworten

  • Hallo,in .NET benutzt man normelerweise spezielle Einstellungen zum speichern von Benutzerdaten.

    Dort brauchst du nur Eigenschaften anzulegen und entsprechend in den Eventhandlern der Buttons zuzuweisen.

    Den angezeigten Text speichern TextBoxen(WinForms/WPF) in der Text-Eigenschaft (WinForms/WPF).

    Wenn du trotzdem eine normale Datei haben willst (Dateiaustausch!?), dann würde ich es wie folgt aufbauen:
    Name
    Vorname
    Adresse
    Telefon
    ...

    Also jede TextBox bekommt eine Zeile. Nun kannst du es wie folgt in eine Datei hinein schreiben:

                //Daten schreiben
                StreamWriter sw = null;
                try
                {
                    sw = new StreamWriter(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "data.txt"));
                    sw.WriteLine("Name");
                    sw.WriteLine("Vorname");
                    sw.WriteLine("Adresse");
                    sw.WriteLine("Telefon");
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    sw.Close();                
                }

    Dabei sind die Texte in WriteLine() die in die Datein zu schreibenden Texte.

    Zum auslesen kannst du folgenden Code verwenden:

                //Daten lesen
                StreamReader sw = null;
                try
                {
                    sw = new StreamReader(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "data.txt"));
                    textBoxName.Text = sw.ReadLine();
                    textBoxVorname.Text = sw.ReadLine();
                    textBoxAdresse.Text = sw.ReadLine();
                    textBoxTelefon.Text = sw.ReadLine();
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    sw.Close();                
                }

    Wichtig ist also die Reihenfolge, wie die Daten in der Datei stehen.

    (Ich erzeugte in den obigen Codes einen Stream, der im finally Block wieder frei gegeben wird, falls ein Fehler auftritt, nachfolgend benutze ich die FileKlasse, die hier eine vereinfachung bietet)

    Alternativ kannst du dir auch für jeden Eintrag einen Präfix ausdenken, nach dem du dann die Daten zuordnest:

                    foreach(string line in File.ReadAllLines(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "data.txt")))
                    {
                        if (line.Length >= 5)
                        {
                            switch (line.Substring(0, 5))
                            {
                                case "name:":
                                    textBoxName.Text = line.Substring(5);
                                    break;
                                case "lstn:":
                                    textBoxVorname.Text = line.Substring(5);
                                    break;
                            }
                        }
                        else
                        {
                            MessageBox.Show("Fehlerhafter Datensatz");
                        }
                    }






    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets

    • Als Antwort markiert sirchamp Samstag, 9. Februar 2013 17:32
    Samstag, 9. Februar 2013 14:08
    Moderator