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

È stato utile?

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();
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top