Benutzer mit den meisten Antworten
Gespeichertes txt File von TextBox wieder einlesen

Frage
-
Hallo.
Ich habe einen Code in C# (WPF) für ein Telefonbuch geschrieben.
Vorname, Nachname und Nummer werden in einer Textbox gespeichert.
Wenn ich nun die .txt Datei auf meinem Desktop speichere und im Programm unter "Öffnen" wieder öffnen möchte zeigt mir die Textbox nichts an.
Code:
Vielen Dank fürs erste!public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } string Vorname; string Nachname; string Nummer; string Ergebnis; #region TEXTFELDER private void MenuItem_Click(object sender, RoutedEventArgs e) { Vorname = txtVorname.Text; Nachname = txtNachname.Text; Nummer = txtNummer.Text; Ergebnis = "Vorname: " + Vorname + "Nachname: " + Nachname + "\nNummer: " + Nummer + "\n\n"; txtErgebnis.Text += Ergebnis; } #endregion #region BEENDEN private void MenuItem_Click_1(object sender, RoutedEventArgs e) { this.Close(); } #endregion #region SPEICHERN private void MenuItem_Click_2(object sender, RoutedEventArgs e) { FileStream fs = null; Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog(); dlg.FileName = "Document"; // Default file name dlg.DefaultExt = ".text"; // Default file extension dlg.Filter = "Text documents (.txt)|*.txt"; // Filter files by extension // Show save file dialog box Nullable<bool> result = dlg.ShowDialog(); // Process save file dialog box results if (dlg.FileName != "") { System.IO.StreamWriter datei = new System.IO.StreamWriter(dlg.FileName); datei.Write(txtErgebnis.Text); datei.Close(); //System.IO.FileStream fs = // (System.IO.FileStream)dlg.OpenFile(); } fs.Close(); } #endregion #region ÖFFNEN private void MenuItem_Click_3(object sender, RoutedEventArgs e) { FileStream fs = null; Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog(); dlg.DefaultExt = ".txt"; dlg.Filter = "Telefonbuch (.txt) | *.txt | Alle Datein| *.* "; if (dlg.ShowDialog() == true) { try {
(Diesen Code habe ich von einem Paint Programm wo ich InkCanvas verwendet habe, ich habe keine Ahnung
wie ich ihn umschreiben soll das ich txt File öffnen kann) fs = new FileStream(dlg.FileName,FileMode.Open, FileAccess.Read); StrokeCollection strokes = new StrokeCollection(fs); txtErgebnis.Text = strokes; } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { if(fs != null) fs.Close(); } } } #endregion #region LÖSCHEN private void btnFelderLoeschen_Click(object sender, RoutedEventArgs e) { ZeilenLöschen(); } private void btnRegisterLoeschen_Click(object sender, RoutedEventArgs e) { MessageBoxResult result = MessageBox.Show("Wirklich das komplette Register löschen?", "Register löschen", MessageBoxButton.YesNo, MessageBoxImage.Question); if (result == MessageBoxResult.Yes) AllesLöschen(); } public void ZeilenLöschen() { txtVorname.Text = ""; txtNachname.Text = ""; txtNummer.Text = ""; } public void AllesLöschen() { txtVorname.Text = ""; txtNachname.Text = ""; txtNummer.Text = ""; } #endregion } }
Antworten
-
Hallo Matthias!
Wenn ich das richtig verstanden habe ist wohl dieser Code der einfachste:
System.IO.StreamReader sr = new System.IO.StreamReader(Environment.GetFolderPath(dlg.FileName); textBox.Text = sr.ReadToEnd(); sr.Close();
Ich hoffe es hilft dir!
By_The_Dani :P
Programmiersprachen: C# (Windows Forms), Java
- Bearbeitet The_Dani Samstag, 19. September 2015 07:46
- Als Antwort vorgeschlagen Tobias Scholze Dienstag, 22. September 2015 11:40
- Als Antwort markiert Aleksander Chalabashiev Dienstag, 29. September 2015 07:57
-
Hallo,
den Teil zum Auslesen der Textdatei kannst Du folgendermaßen ändern:
txtErgebnis.Text = File.ReadAllText ( dlg.FileName );
Ist ein bisschen einfacher als der FileStream (bei dem Du übrigens immer einen using-Block verwenden solltest)
- Als Antwort vorgeschlagen Tobias Scholze Dienstag, 22. September 2015 11:40
- Als Antwort markiert Aleksander Chalabashiev Dienstag, 29. September 2015 07:57
Alle Antworten
-
Hallo Matthias,
ich bin mir nicht ganz sicher, ob man die Frage (welche eigentlich?) sinnvoll beantworten kann.
Die StrokeCollection erscheint mir aber hier nicht sinnvoll, vielleicht solltest du die in deinem Paint-Programm belassen und dir vielleicht nebenbei Klarheit darüber verschaffen, was "Strokes" sind und welchen Sinn die StrokeCollection hat.
Wenn mich mein Eindruck nicht täuscht, trägst du die gewünschten Informationen in Textfelder ein, kombinierst diese dann in ein weiteres Textfeld und speicherst diesen zusammengesetzten String dann in eine Datei. Nebenbei, Willst du wirklich für jeden Eintrag eine eigen Datei anlegen?
Eine Möglichkeit, eine Textdatei (insbesondere kleine Dateien) einzulesen, wäre exemplarisch:
string pfad = @"d:\test.txt"; string inhalt = "Wilhelm;Tell;112"; // neue Datei using (System.IO.StreamWriter sw = new System.IO.StreamWriter(pfad)) { sw.Write(inhalt); } // an bestehende Datei anhängen oder neue Datei using (System.IO.StreamWriter sw = new System.IO.StreamWriter(pfad, append:true)) { sw.Write(inhalt); } // bestehende Datei einlesen {System.IO.File.Exists(pfad) kann helfen} using (System.IO.StreamReader sr = new System.IO.StreamReader(pfad)) { inhalt = sr.ReadToEnd(); } // Alternativen System.IO.File.WriteAllText(pfad, inhalt); System.IO.File.AppendAllText(pfad, inhalt); inhalt = System.IO.File.ReadAllText(pfad);
Vielleicht hilft es ja weiter...
-
Hallo Matthias!
Wenn ich das richtig verstanden habe ist wohl dieser Code der einfachste:
System.IO.StreamReader sr = new System.IO.StreamReader(Environment.GetFolderPath(dlg.FileName); textBox.Text = sr.ReadToEnd(); sr.Close();
Ich hoffe es hilft dir!
By_The_Dani :P
Programmiersprachen: C# (Windows Forms), Java
- Bearbeitet The_Dani Samstag, 19. September 2015 07:46
- Als Antwort vorgeschlagen Tobias Scholze Dienstag, 22. September 2015 11:40
- Als Antwort markiert Aleksander Chalabashiev Dienstag, 29. September 2015 07:57
-
Hallo,
den Teil zum Auslesen der Textdatei kannst Du folgendermaßen ändern:
txtErgebnis.Text = File.ReadAllText ( dlg.FileName );
Ist ein bisschen einfacher als der FileStream (bei dem Du übrigens immer einen using-Block verwenden solltest)
- Als Antwort vorgeschlagen Tobias Scholze Dienstag, 22. September 2015 11:40
- Als Antwort markiert Aleksander Chalabashiev Dienstag, 29. September 2015 07:57