Hallo liebe Community,
folgendes Problem:
Ich habe eine richTextBox in der ganz normaler Text steht. Diesen Text wollte ich ganz normal als .txt speichern. Wenn ich diesen Text jedoch dann mit dem Windows-Editor öffne, sind keine Zeilenumbrüche vorhanden. Ich denke es liegt an der falschen Codierung mit der der Text gespeichert wird.
Habe auch schon die SuFu bemüht aber nichts richtiges gefunden.
Ich habe auch schon probiert mit
System.Text.Encoding
was anzufangen, aber irgendwie komme ich nicht weiter.
Tipps und Denkanstöße würden mir sehr helfen.
Danke schonmal.
Gruß Trekki
Hi Trekki1990,
bist du dir denn auch sicher das dein Text Zeilenumbrüche enthält und den angezeigten Text nicht nur aufgrund der Control-Breite umbricht?
Sorry für die Frage, doch ich habe inzwischen gelernt immer mit der simpelsten Fehlerquelle zu beginnen... 😉
MfG
wax
Naja ich schreibe in meiner Anwendung Text und drücke ENTER.
Für mich ist das ein Zeilenumbruch, oder etwa nicht?
Schau mal im Debugger ob du die entsprechenden Steuerzeichen nachher im String wiederfindest ("\r\n"). Am Encoding dürfte das eher nicht liegen.
Bzw. wie speicherst du den Text ins File?
private void speichernUnterToolStripMenuItem_Click(object sender, EventArgs e)
{
// Datei speichern
int save = Einstellungen.Default.autominimieren;
Einstellungen.Default.autominimieren = 0;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.InitialDirectory = ".";
saveFileDialog1.RestoreDirectory = false;
saveFileDialog1.Filter = "Text-Dateien (*.txt)|*.txt|RTF-Dateien (*.rtf)|*.rtf|JScript-Dateien (*.js)|*.js|VBScript-Dateien (*.vbs)|*.vbs|CS-Dateien (*.cs)|*.cs|HTML-Dateien (*.html)|*.html|Alle Dateien |*";
saveFileDialog1.FilterIndex = 1;
switch (saveFileDialog1.ShowDialog())
{
case DialogResult.OK:
Save(saveFileDialog1.FileName);
this.Refresh();
Einstellungen.Default.autominimieren = save;
break;
case DialogResult.Cancel:
this.Refresh();
Einstellungen.Default.autominimieren = save;
break;
}
}
private void Save(string dateiname)
{
try
{
StreamWriter sw = new StreamWriter(dateiname);
sw.Write(richTextBox1.Text);
sw.Close();
MessageBox.Show("Datei erfolgreich gespeichert!", "Hinweis");*/
}
catch (IOException ioex)
{
MessageBox.Show("Datei konnte nicht gespeichert werden! (002)\n\n" + ioex.Message, "Fehler");
}
}
Damit mache ich das. Ein ganz normaler StreamWriter.
Das Problem ist, dass die RichTextBox einen Unix-Zeilenumbruch ('\n') verwendet und nicht einen windowsartigen ('\r\n'). Der Windows-Editor kann jedoch nur mit denjenigen von Windows umgehen.
Weitere Informationen zu Zeilenumbrüchen: http://de.wikipedia.org/wiki/Zeilenumbruch
Lösung: Am besten schreibst du die Datei Zeile für Zeile
using(StreamWriter writer = new StreamWriter(file))
{
foreach (string line in richTextBox.Lines)
{
writer.WriteLine(line);
}
}
Lösung: Am besten schreibst du die Datei Zeile für Zeile
Bzw. ersetzest '\n'
durch Environment.NewLine.
Nur mal so als Frage, wenn du eine RTB benutzt, warum vernichtest du dann
die Formatierung?