Scrivendo il contenuto di un RichTextBox a un file
-
12-09-2019 - |
Domanda
Ho un RichTextBox e voglio salvare il testo in un file. Ogni riga del RichTextBox si è conclusa con CR + LF ( "\ n \ r"), ma quando salvo in un file, le righe contiene solo il carattere LF alla fine.
Se copio il contenuto negli appunti invece di un file di tutto va a destra (Il contenuto della clipboar ha CR + LF alla fine di ogni riga, lo vedo quando mi incollo in Notepad ++). txtClass è RichTextBox.
private void btnToClipboard_Click (object sender, EventArgs e) { // Funziona se lo desideri Clipboard.SetText (txtClass.Text); }
private void btnToFile_Click(object sender, EventArgs e)
{
//Don't work as desired
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
saveFileDialog1.FilterIndex = 2;
saveFileDialog1.RestoreDirectory = true;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
System.IO.StreamWriter SW = new System.IO.StreamWriter(saveFileDialog1.FileName, false, Encoding.ASCII);
SW.Write(txtClass.Text);
SW.Close();
}
}
In questo momento, ho anche provato con
SW.NewLine = "\r\n";
SW.Newline = Environment.NewLine
e con tutti avalilables il circuito di codifica.
Se uso SW.Write ( "Line una \ r \ nLineTwo \ r \ nLineThree") funziona anche bene.
Grazie per il vostro aiuto
Soluzione
Grazie a Peter Lindholm, che mi ha dato la risposta corretta in un commento.
Hai provato il metodo SaveFile situato sul RichTextBox in sé? http: // msdn .microsoft.com / en-us / library / system.windows.forms.richtextbox.savefile (VS.71) aspx
Altri suggerimenti
Ho avuto lo stesso problema - ma non volevo salvare come RichTextBox -. Solo un semplice file txt standard che potrebbero essere facilmente letto e modificato in Blocco note
Il problema è per qualche motivo la classe StreamWriter non scrive il \ n nel file (ancora non so perché - si potrebbe pensare che sarebbe):)
Quindi, una soluzione semplice è quella di sostituire manualmente \ n con \ r \ n e funziona perfettamente come previsto.
Vedere codice snipit di seguito:
if ((myStream = ScriptFileSaveDB.OpenFile()) != null)
{
using (StreamWriter sr = new StreamWriter(myStream))
{
//Since \n (newlines) are not being written correctly as \r\n
//Go thru Text and replace all "\n" with \r\n
tempStr = ScriptProgramWindowRTB.Text;
tempStr = tempStr.Replace("\n", "\r\n");
sr.Write(tempStr);
}
private void btnToFile_Click(object sender, EventArgs e)
{
//Don't work as desired
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
saveFileDialog1.FilterIndex = 2;
saveFileDialog1.RestoreDirectory = true;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
System.IO.StreamWriter SW = new System.IO.StreamWriter(
saveFileDialog1.FileName, false, Encoding.ASCII);
SW.Write(txtClass.Text);
SW.Close();
}
}