将两个RichTextbox的内容作为单个RichText字符串附加

时间:2011-02-14 16:17:30

标签: c# .net windows winforms

我想在Windows Forms .Net应用程序中附加两个富文本框的内容;说:stringText = richtextbox1.Rtf + richtextbox2.Rtf; stringText应该是RTF文本,它应该有\ rtf行一次,连接富文本。

剪贴板不在此范围内。

另外,我很好奇,如果我们可以将它们拆分。

4 个答案:

答案 0 :(得分:17)

试试这个:

richTextBoxTarget.Select(richTextBoxTarget.TextLength, 0);
richTextBoxTarget.SelectedRtf = richTextBoxSource.Rtf;

这将richTextBoxSource的内容合并到richTextBoxTarget的末尾。它只使用一个\ rtf标签自动创建有效的RTF 要取消合并,请使用SelectSelectedRtf。这里唯一的要求是,你需要知道你想要拆分的位置。

答案 1 :(得分:1)

我知道这是一个古老的问题,但它似乎很常见。因此,我要添加我的答案,因为标记的答案使RTF连接,但每次都会给出一个额外的新行。

这将是:

RichTextBoxSource.Select(0,RichTextBoxSource.TextLength);
RichTextBoxTarget.SelectedRtf = richTextBoxSource.SelectedRtf;

它很简单,工作正常。希望它会帮助某人:)

答案 2 :(得分:0)

不确定这是否有用,但是上面的代码重新格式化为扩展方法。 这让你说:

textBox.AppendRtf(someRtfString)

可轻松与RichTextBox类的AppendText()方法匹配。

''' <summary>
''' Appends the provided RTF-formatted string to the provided <see cref="RichTextBox"/>.
''' </summary>
<Extension()> _
Public Sub AppendRtf(ByVal rtbTextBox As RichTextBox, ByVal strRtf As String)
    rtbTextBox.Select(rtbTextBox.TextLength, 0)
    rtbTextBox.SelectedRtf = strRtf
End Sub

答案 3 :(得分:0)

因为我无法对Pawel anwser发表评论,除了他的代码,我必须补充一点:

RichTextBoxSource.Select(0,RichTextBoxSource.TextLength);
RichTextBoxTarget.SelectedRtf = richTextBoxSource.SelectedRtf;

如果您希望新文本始终位于顶部

,则应添加
RichTextBoxTarget.Select(0,0);

或者如果您希望它始终位于底部

RichTextBoxTarget.Select(RichTextBoxTarget.TextLength,0);

因此,即使目标richtextbox可点击,您也可以像Daniel回答一样控制位置。