您可能会得到这个,因为您试图仅使用以下代码将richTextBox1.Text(整个文本)保存在一行中
StreamWriter sw = File.CreateText(saveFileDialog2.FileName);
sw.WriteLine(richTextBox1.Text);
sw.Flush();
sw.Close();
建议在richTextBox1 中的特定行号上使用sw.WriteLine(),然后移至另一行。
示例
for (int i = 0; i < richTextBox1.Lines.Length; i++)
{
sw.WriteLine(richTextBox1.Lines[i]);
}
sw.Flush();
sw.Close();
另一种解决方案
RichTextBox 已经有一个内置函数来保存具有特定编码的文件。为此,您可以使用RichTextBox.SaveFile()。
示例
RichTextBox.SaveFile(string path, RichTextBoxStreamType);
path 在您的代码中代表 saveFileDialog2.FileName。对于RichTextBoxStreamType,最好设置为RichTextBoxStreamType.PlainText,只要不使用颜色/字体/保护/缩进/等RTF...
然后,您可以使用以下方法再次读取文件
RichTextBox.LoadFile(string path, RichTextBoxStreamType);
注意:如果文件不在 RTF 中,而您尝试在 RTF 中读取它 (RichTextBox.LoadFile(string path, RichTextBoxStreamType.RichText);)
您可能会遇到格式错误。在这种情况下,您需要捕获异常并以普通或 Unicode 编码读取文件。
示例
RichTextBox _RichTextBox = new RichTextBox();
try
{
_RichTextBox.LoadFile(@"D:\Resources\text.txt", RichTextBoxStreamType.RichText);
}
catch (Exception EX)
{
if (EX.Message.ToLower().Contains("format is not valid"))
{
_RichTextBox.LoadFile(@"D:\Resources\text.txt", RichTextBoxStreamType.PlainText);
}
}
谢谢,
希望对您有所帮助:)