C# 胜利。表单:向richtextbox添加换行符

C# 胜利。表单:向richtextbox添加换行符,c#,winforms,richtextbox,rtf,C#,Winforms,Richtextbox,Rtf,我有一个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

我有一个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
}
它的输出如下所示:-

{\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
}

姓名:约翰·米勒
当前地址:ABCDEFGHI JKLMNOP QRST UVWXYZ
永久地址:ABCDEFGHI JKLMNOP QRST“此处添加换行符”UVWXYZ
临时地址:ABCDEFGHI JKLMNOP QRST UVWXYZ


现在,我想在文本索引119中添加一个换行符,其中将在此处添加换行符。我该怎么做

挑战者
  • 不能在如下文本中直接使用换行符:

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

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

  • 无法在RTF中直接更改,因为我们不知道特定文本可能位于哪个索引。假设文本位于119索引,但RTF位于263索引

    我们也不能使用文本搜索在RTF中查找索引,因为所有3个地址都完全相同


  • 这应该可以为您做到:

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

    那么,您使用什么机制来确定换行符需要在哪里呢?System.Magic.DoMagic(myMagicValue);不过,严肃地说,唯一的另一个选择是修改文本框中实际创建文本的位置,而您没有将其包括在内