Для проекта, над которым я работаю, я пытаюсь сохранить содержимое WPF RichTextBox в RTF-файл, как указано в заголовке. У меня он работает по большей части. Однако файл не сохраняет символы новой строки. Когда я сохраняю файл (как вы увидите ниже), он сохранит все в одной строке в RTF. Вы можете увидеть, как это будет сохранено ниже.Сохранение RichTextBox в RTF-файле
private void butSaveHistory_Click(object sender, RoutedEventArgs e) {
Microsoft.Win32.SaveFileDialog myDlg = new Microsoft.Win32.SaveFileDialog();
myDlg.DefaultExt = "*.rtf";
myDlg.Filter = "RTF Files|*.rtf";
Nullable<bool> myResult = myDlg.ShowDialog();
if (myResult == true) {
/*using (FileStream myStream = new FileStream(myDlg.FileName, FileMode.OpenOrCreate, FileAccess.Write)) {
TextRange myRange = new TextRange(rtbTraffic.Document.ContentStart, rtbTraffic.Document.ContentEnd);
myRange.Save(myStream, DataFormats.Rtf);
myStream.Close();
}*/
rtbTraffic.SelectAll();
rtbTraffic.Selection.Save(new FileStream(myDlg.FileName, FileMode.OpenOrCreate, FileAccess.Write), DataFormats.Rtf);
}
}
Как вы можете видеть, я пробовал два разных способа. (Один из них прокомментирован) Ни одна из них не работает, они оба просто сохраняют все в одной строке, когда все в RichTextBox находится на нескольких строках.
Так как я могу получить файл для сохранения на несколько строк? Любые советы или предложения были бы весьма признательны.
Примечание: при сохранении в .txt-файле оно корректно сохраняет несколько строк. Однако я не могу сохранить в .txt, потому что цвета и шрифты RichTextBox необходимо сохранить.
Редактировать: Это образец того, как выглядит RichTextBox.
После сохранения файла это выглядит так, когда я открываю RTF в слове.
Это то, что я хочу, чтобы он выводил.
Edit 2: Добавление кода RTF
{\rtf1\ansi\ansicpg1252\uc1\htmautsp\deff2{\fonttbl{\f0\fcharset0 Times New Roman;}{\f2\fcharset0 Segoe UI;}{\f3\fcharset0 Arial;}}{\colortbl\red0\green0\blue0;\red255\green255\blue255;\red0\green128\blue0;\red0\green0\blue255;\red255\green0\blue0;}\loch\hich\dbch\pard\plain\ltrpar\itap0{\lang1033\fs18\f2\b\cf0 \cf0\ql{\f3 {\b0\cf2\highlight1\ltrch 09:10:48 | Thing | STATUS Tube_Heat_Consumer,TUBE_HEAT,3.14209:11:47 | Thing | STATUS Tube_Heat_Consumer,TUBE_HEAT,2.718}{\b0\cf3\highlight1\ltrch 09:58:49 | Thing | STOP STOP}{\b0\cf2\highlight1\ltrch 09:58:49 | Thing | STOP STOP}{\b0\highlight1\ltrch 09:58:57 | Thing | DeRegistration Successful}{\b0\cf4\highlight1\ltrch 09:58:58 | Thing | DeRegistration Failed (Application is not currently registered) | 81270401}{\b0\highlight1\ltrch 09:58:58 | Thing | Registration Successful}\li0\ri0\sa0\sb0\fi0\ql\par}
}
} Thing | DeRegistration Failed (Application is not currently registered) | 81270401}{\b0\highlight1\ltrch 08:55:21 | Thing | Registration Successful08:55:22 | Thing | DeRegistration Successful08:55:22 | Thing | Registration Successful}{\b0\cf2\highlight1\ltrch 08:55:22 | Thing | Registration Failed (Application Thing already registered) | 8127040008:55:22 | Thing | Registration Failed (Application Thing already registered) | 81270400}{\b0\highlight1\ltrch 08:55:23 | Thing | DeRegistration Successful08:55:23 | Thing | Registration Successful08:55:24 | Thing | DeRegistration Successful08:55:24 | Thing | Registration Successful08:55:25 | Thing | DeRegistration Successful}\li0\ri0\sa0\sb0\fi0\ql\par}
}
}
Судя по ней не кодирующими \ пар или \ линии правильно.
Как вы добавляете текст в свой элемент управления richtext? –
Не могли бы вы поместить строку, хранящуюся в textrange, перед преобразованием в rtf? Я думаю, что \ r \ n не сохранены. –