C# RichTextBox到文本文件不会保存换行符
我有一个C# RichTextBox到文本文件不会保存换行符,c#,wpf,visual-studio,xaml,C#,Wpf,Visual Studio,Xaml,我有一个RichTextBox和一个按钮,可以将文本保存到.txt文件中 但是,它不会保存换行符\n。结果都在一行 什么可以阻止它?我正在使用编码.Unicode XAML <RichTextBox x:Name="rtbMessage" Margin="10,10,10,50" /> <Button x:Name="btnSave" Content="Save" Margin="231,264,211,29" Width="75" Click="btnSave_Click"
RichTextBox
和一个按钮
,可以将文本保存到.txt文件中
但是,它不会保存换行符\n
。结果都在一行
什么可以阻止它?我正在使用编码.Unicode
XAML
<RichTextBox x:Name="rtbMessage" Margin="10,10,10,50" />
<Button x:Name="btnSave" Content="Save" Margin="231,264,211,29" Width="75" Click="btnSave_Click"/>
C#
String message=“你好,世界。\n\n这是一个测试。”;
第p段=新的第()段;
//启动
//将消息写入RichTextBox
//
公共主窗口()
{
初始化组件();
rtbMessage.Document=新流程文档(p);
rtbMessage.BeginChange();
p、 添加(新运行(消息));
rtbMessage.EndChange();
}
//将RichTextBox复制到字符串
//
公共字符串MessageRichTextBox()
{
流程文件fd=新流程文件(p);
rtbMessage.Document=fd;
TextRange TextRange=新的TextRange(
rtbMessage.Document.ContentStart,
rtbMessage.Document.ContentEnd
);
返回textRange.Text;
}
//将消息保存到.txt文件
//
私有无效按钮保存单击(对象发送者,路由目标)
{
Microsoft.Win32.SaveFileDialog saveFile=新建Microsoft.Win32.SaveFileDialog();
//保存与输入目录相同的文件默认路径
saveFile.RestoreDirectory=true;
saveFile.Filter=“文本文件(*.txt)|*.txt”;
saveFile.DefaultExt=“.txt”;
saveFile.FileName=“Message”;
//显示保存文件对话框
Nullable result=saveFile.ShowDialog();
//“进程”对话框
如果(结果==真)
{
//保存文档
File.writealText(saveFile.FileName,MessageRichTextBox(),Encoding.Unicode);
}
}
我使用richtextbox,但我使用Environment.NewLine而不是“\n”
在您的示例中:
String message = "Hello, world." + Environment.NewLine + Environment.NewLine + "This is a test.";
也许这是一个解决办法。看起来您在抓取邮件时正在重置邮件
public String MessageRichTextBox()
{
FlowDocument fd = new FlowDocument(p);
rtbMessage.Document = fd;
似乎没有必要,可能是原因。如果我旁边没有windows计算机,我无法验证(很抱歉现在在Mac上),请尝试一下
TextRange textRange = new TextRange(
rtbMessage.Document.ContentStart,
rtbMessage.Document.ContentEnd);
到
我尝试了
Environment.NewLine
,但它仍然没有保存。我删除了该部分,但没有产生任何影响。是否使用记事本查看保存的文件?您的换行符是\n
,记事本不擅长unix换行。如果使用记事本++打开文件,将看到换行符。或者将您的文本中的\n
替换为\r\n\r\n
。@YusufTarıkGünaydın我调整了我的代码,\r\n
工作了,谢谢。它给出了相同的结果。这似乎是记事本的问题。换行符显示在Sublime Text.p.Inlines.Add(新运行(消息))中;这句话是什么意思?据我所知,它没有添加新的行。如果我写的字符串消息
包含你好,世界,请纠正我的错误\n\n这是一个测试。
The\n
是换行符。它也可以是p.Inlines.Add(新运行(“Hello,world.\n\n这是一个测试”)代码>环境.NewLine可以在添加文本时进行工作检查
TextRange textRange = new TextRange(
rtbMessage.Document.ContentStart,
rtbMessage.Document.ContentEnd);
TextRange textRange = new TextRange(
p.ContentStart,
p.ContentEnd)