如何在RichTextBox中附加RTF文本,Win C#

时间:2014-03-11 09:28:00

标签: c# append richtextbox

我在Win C#中有一个RichTextBox,我想在RichTextBox中附加一些带有Bold效果的新文本。那我怎么能这样做呢。

我试过

string str = richTextBox.Rtf;

//my logic
str+= @"\rtf1\ansi Adding Some \b Text\b0.}";
//

现在附加

richTextbox.AppendText(str);

但它没有表现出正确的。

我之前的输出

  

这是第一个 Word。

我希望输出像

  

这是第一个 Word。添加一些文字

那我怎么能这样做呢?

4 个答案:

答案 0 :(得分:3)

以下函数引用了RichTextBox以及一些格式化参数。该功能记录在案:

/// <summary>
/// Append formatted text to a Rich Text Box control 
/// </summary>
/// <param name="rtb">Rich Text Box to which horizontal bar is to be added</param>
/// <param name="text">Text to be appended to Rich Text Box</param>
/// <param name="textColour">Colour of text to be appended</param>
/// <param name="isBold">Flag indicating whether appended text is bold</param>
/// <param name="alignment">Horizontal alignment of appended text</param>
private void AppendFormattedText(RichTextBox rtb, string text, Color textColour, Boolean isBold, HorizontalAlignment alignment)
{
    int start = rtb.TextLength;
    rtb.AppendText(text);
    int end = rtb.TextLength; // now longer by length of appended text

    // Select text that was appended
    rtb.Select(start, end - start);

    #region Apply Formatting
    rtb.SelectionColor = textColour;
    rtb.SelectionAlignment = alignment;
    rtb.SelectionFont = new Font(
         rtb.SelectionFont.FontFamily,
         rtb.SelectionFont.Size,
         (isBold ? FontStyle.Bold : FontStyle.Regular));
    #endregion

    // Unselect text
    rtb.SelectionLength = 0;
}

以下代码添加原始文本:

  

这是第一个 Word。

// This creates the original text
AppendFormattedText(richTextBox, "This is ", Color.Black, false, HorizontalAlignment.Left);
AppendFormattedText(richTextBox, "First", Color.Black, true, HorizontalAlignment.Left);
AppendFormattedText(richTextBox, " Word.", Color.Black, false, HorizontalAlignment.Left);

...然后在最后附加一个句子,以便富文本框的内容符合要求:

  

这是第一个 Word。添加一些文字

// This appends additional text
AppendFormattedText(richTextBox, " Adding Some ", Color.Black, false, HorizontalAlignment.Left);
AppendFormattedText(richTextBox, "Text", Color.Black, true, HorizontalAlignment.Left);
AppendFormattedText(richTextBox, ".", Color.Black, false, HorizontalAlignment.Left);

除了问题中要求的内容之外,还有其他参数(例如颜色),但这些参数构成了可以使用select-format-deselect格式化方法完成的所有格式化操作的基础,而不是而不是手动编辑RTF代码。

答案 1 :(得分:3)

假设插入点位于末尾(默认情况下是这样),只需执行以下操作:

richTextBox1.SelectedRtf = @"{\rtf1\ansi Adding some \b text\b0.}";

答案 2 :(得分:0)

我找到了解决方案 这个对我有用

var rtb = new RichTextBox()
  { Rtf= obj.TOCOMM };
rtb.SelectAll();
rtb.Copy();
RTXT_DoText.Paste();

答案 3 :(得分:-1)

虽然我已经看到很多使用剪贴板的示例,这是在Rich Text控件中任意位置插入图像的绝佳方式(只需使用Rich Text控件的Paste()方法),最简单的解决方案是简单地放置目标SelectionStart属性为其TextLength属性,确保其SelectionLength属性为零,然后将源的SelectedRtf属性的内容填充到目标 - 现在为空的SelectedRtf。当然,需要注意的是,您不应该尝试将RTF属性的全部内容插入到目标Rtf属性中。你只想要选择。有时候,我必须通过创建隐藏的Rich Text控件来完成此操作,填充其Rtf属性并插入完整的RTF文本,调用其SelectAll方法以选择我要插入的所有文本,然后插入RTB的SelectedRtf属性为目标SelectedRtf属性。