我有一个RichTextBox,我想将文本保存到文件中。 RichTextBox的每一行都以CR + LF(“\ n \ r”)结束,但是当我将它保存到文件时,行末尾只包含LF char。
如果我将内容复制到剪贴板而不是文件都是正确的(剪贴板的内容在每行的末尾都有CR + LF,我可以在粘贴Notepad ++时看到它)。 txtClass是RichTextBox。
private void btnToClipboard_Click(object sender,EventArgs e) { //根据需要工作 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();
}
}
此刻,我也试过
SW.NewLine = "\r\n";
SW.Newline = Environment.NewLine
以及所有Enconding avalilables。
如果我使用 SW.Write(“Line One \ r \ nLineTwo \ r \ nLineThree”)也可以正常工作。
感谢您的帮助
答案 0 :(得分:3)
感谢Peter Lindholm,他在评论中给了我正确答案。
您是否尝试过SaveFile方法? 位于RichTextBox本身? http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.savefile(VS.71).aspx
答案 1 :(得分:1)
我有同样的问题 - 但不想保存为RichTextBox - 只是一个标准的简单txt文件,可以在记事本中轻松阅读和编辑。
问题是由于某种原因,StreamWriter类没有将\ n写入文件(仍然不确定为什么 - 你会认为它会):)
所以一个简单的解决方案是用\ r \ n手动替换\ n,并按预期完美地工作。
请参阅下面的代码片段:
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);
}
答案 2 :(得分: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();
}
}