【问题标题】:C# Win. Form : Adding a line break to a richtextboxC#赢。表单:向富文本框添加换行符
【发布时间】:2018-02-07 05:36:51
【问题描述】:

我有一个丰富的文本框,我在其中填充了格式化的文本。 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
}

它的输出看起来像这样:-


姓名:John Miller
当前地址:ABCDEFGHI JKLMNOP QRST UVWXYZ
永久地址:ABCDEFGHI JKLMNOP QRST '要在此处添加换行符' 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 中更改,因为我们不知道特定文本可能位于哪个索引处。假设 文本位于第 119 个索引,但 RTF 位于第 263 个索引

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

【问题讨论】:

  • 那么,您究竟使用什么机制来确定需要换行的位置?
  • System.Magic.DoMagic(myMagicValue);说真的,唯一的其他选择是修改您在文本框中实际创建文本的位置,而您没有包含该文本

标签: c# winforms richtextbox rtf


【解决方案1】:

这应该为你做:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    相关资源
    最近更新 更多