C# 赢。形式:向富文本框添加换行符

C# Win. Form : Adding a line break to a richtextbox

我有一个 richtextbox,我正在其中填充格式化文本。 richtextbox 的 RTF 看起来像这样:-

{\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Bookman Old Style;}}
\viewkind4\uc1\pard\lang1033\b\f0\fs21 Name\b0\tab : John Miller\par
\b Current Address\b0\tab : ABCDEFGHI JKLMNOP QRST UVWXYZ\par
\b Permanent Address\b0\tab : ABCDEFGHI JKLMNOP QRST UVWXYZ\par
\b Temporary Address\b0\tab : ABCDEFGHI JKLMNOP QRST UVWXYZ\par
}

它的 OUTPUT 看起来像这样:-


姓名:约翰·米勒
当前地址:ABCDEFGHI JKLMNOP QRST UVWXYZ
永久地址:ABCDEFGHI JKLMNOP QRST 'line break to be added here' UVWXYZ
临时地址:ABCDEFGHI JKLMNOP QRST UVWXYZ


现在我想在 文本索引 119 处添加一个换行符,其中 换行符要添加到这里 被写入。我该怎么做?

挑战

  1. 您不能直接在文本中使用换行符,例如:

    richTextBox.Text = richTextBox.Text.Substring(0,119) + Environment.NewLine + richTextBox.Text.Substring(119, richTextBox.Text.Length - 119);

    因为它会删除我在文本文本中所做的粗体设置

  2. 无法在 RTF 中直接更改 ,因为我们不知道特定文本可能在哪个索引处。假设 text 位于 119 indexRTF 位于 263th index

    我们也无法使用文本搜索来查找 RTF 中的索引,因为所有 3 个地址都完全相同。

这应该为您完成:

rtb1.SelectionStart = 119;
rtb1.SelectionLength = 0;
rtb1.SelectedText = Environment.NewLine;