我有一个RichTextBox
和一个Button
,可将其文本保存为.txt文件。
但是它没有保存LineBreaks \n
。它最终都在一行中。
有什么可以阻止它?我使用Encoding.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 = "Hello, world.\n\n This is a test.";
Paragraph p = new Paragraph();
// Startup
// Write Message to RichTextBox
//
public MainWindow()
{
InitializeComponent();
rtbMessage.Document = new FlowDocument(p);
rtbMessage.BeginChange();
p.Inlines.Add(new Run(message));
rtbMessage.EndChange();
}
// Copy RichTextBox to String
//
public String MessageRichTextBox()
{
FlowDocument fd = new FlowDocument(p);
rtbMessage.Document = fd;
TextRange textRange = new TextRange(
rtbMessage.Document.ContentStart,
rtbMessage.Document.ContentEnd
);
return textRange.Text;
}
// Save Message to .txt File
//
private void buttonSave_Click(object sender, RoutedEventArgs e)
{
Microsoft.Win32.SaveFileDialog saveFile = new Microsoft.Win32.SaveFileDialog();
// Save File Default Path same as Input Directory
saveFile.RestoreDirectory = true;
saveFile.Filter = "Text file (*.txt)|*.txt";
saveFile.DefaultExt = ".txt";
saveFile.FileName = "Message";
// Show Save File dialog box
Nullable<bool> result = saveFile.ShowDialog();
// Process dialog box
if (result == true)
{
// Save document
File.WriteAllText(saveFile.FileName, MessageRichTextBox(), Encoding.Unicode);
}
}
答案 0 :(得分:0)
我使用richtextbox,但我使用Environment.NewLine而不是&#34; \ n&#34;。
在你的例子中:
String message = "Hello, world." + Environment.NewLine + Environment.NewLine + "This is a test.";
也许这是一种解决方法。
答案 1 :(得分:0)
当您抓住该消息时,您似乎正在重置该消息
public String MessageRichTextBox()
{
FlowDocument fd = new FlowDocument(p);
rtbMessage.Document = fd;
似乎没必要,可能是原因。我不能在我旁边没有Windows机器验证(现在在Mac上对不起),只是尝试一下
答案 2 :(得分:0)
更改
TextRange textRange = new TextRange(
rtbMessage.Document.ContentStart,
rtbMessage.Document.ContentEnd);
要
TextRange textRange = new TextRange(
p.ContentStart,
p.ContentEnd)