Элемент управления RichTextBox автоматически обновляет свойства Text и Rtf при изменении любого из них. Любой текст, добавленный к свойству Text, будет автоматически обновлен до свойства RTF.
После некоторого быстрого тестирования кажется, что элемент управления RichTextBox автоматически вставляет \ par в любую новую строку (ввод, смещение-ввод в элементе управления и \ r \ n \ r \ n Environment.NewLine в свойстве Text и AppendText () функция на самом контроле). О чем вы и сообщаете как о своей проблеме.
Я не верю, что есть какой-либо способ изменить то, как элемент управления генерирует RTF. Я просто добавил бы текст и позволил элементу управления RichTextBox обработать преобразование любых символов, которые могут нуждаться в экранировании, а затем заменить все \ par на \ line.
Предполагая, что textInfo является TextBox, и вы хотите добавить его содержимое в конец некоторого уже существующего RTF (если не заменить + = for = в строке 1
rtb.Text += textInfo.Text;
rtb.Rtf = rtb.Rtf.Replace(@"\par", @"\line");
Edit:
Поскольку вы добавляете строки в ваш документ построчно, и вы знаете, что элемент управления генерирует \ par для \ r \ n, вы можете добавить некоторый уникальный текст (вы можете проявить креативность здесь, я использовал REPLN) к линии, которые вы хотите разорвать с помощью \ линии. Конечно, вы должны быть в состоянии определить строки, которые вы хотите заменить, что я предполагаю, что вы делаете из своего вопроса. После добавления вашего уникального текста вы можете снова заменить REPLN \ par на \ line. Не так элегантно, как хотелось бы, но оно выполняет свою работу.
foreach (string line in textInfo.Lines)
{
//assuming your condition is that the string contains the substring, "substring"
rtb.AppendText(line + (line.Contains("substring") ? "REPLN\r\n" : "\r\n"));
}
rtb.Rtf = richTextBox1.Rtf.Replace(@"REPLN\par", @"\line");