Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# RichTextBox到文本文件不会保存换行符_C#_Wpf_Visual Studio_Xaml - Fatal编程技术网

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)