2009-07-09 6 views
4

J'ai un RichTextBox et je veux enregistrer le texte dans un fichier. Chaque ligne de la RichTextBox est terminée avec CR + LF ("\ n \ r") mais quand je l'enregistre dans un fichier, les lignes ne contiennent que le caractère LF à la fin. Si je copie le contenu dans le presse-papiers au lieu d'un fichier, tout va bien (Le contenu du clipboar a CR + LF à la fin de chaque ligne, je peux le voir quand je le colle dans Notepad ++). txtClass est le RichTextBox.Ecriture du contenu d'un RichTextBox dans un fichier

private void (object sender, EventArgs e) {btnToClipboard_Click // Fonctionne comme on le souhaite 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(); 
    } 

} 

En ce moment, j'ai aussi essayé avec

SW.NewLine = "\r\n"; 
SW.Newline = Environment.NewLine 

et avec tous avalilables Enconding.

Si j'utilise SW.Write ("Line One \ Line \ TwoLineThree") fonctionne également très bien.

Merci pour votre aide

+3

Avez-vous essayé la méthode SaveFile situé sur le RichTextBox lui-même? http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.savefile(VS.71).aspx –

+0

txtClass.SaveFile (saveFileDialog1.FileName, RichTextBoxStreamType.PlainText); A travaillé parfaitement. Merci! – Jonathan

+0

@ Jonathan- pourriez-vous ajouter Mr.Lindholms à cette question et la marquer comme une réponse? Je suis tombé sur votre question deux fois maintenant car il n'est toujours pas répondu :) –

Répondre

0
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(); 
    } 
} 
1

J'ai eu la même question - mais ne voulait pas enregistrer en tant que RichTextBox - juste un simple fichier txt standard qui pourrait facilement être lu et modifié dans le bloc-notes.

La question est pour une raison quelconque la classe StreamWriter ne pas écrire \ n dans le fichier (toujours pas pourquoi - vous pensez que ce serait) :)

donc une solution simple consiste à remplacer manuellement \ n avec \ r \ n et fonctionne parfaitement comme prévu.

Code Voir snipit ci-dessous:

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); 
    } 
Questions connexes