C# 将两个RichTextbox的内容作为单个RichText字符串追加

C# 将两个RichTextbox的内容作为单个RichText字符串追加,c#,.net,windows,winforms,C#,.net,Windows,Winforms,我想在Windows窗体.Net应用程序中附加两个富文本框的内容;说:stringText=richtextbox1.Rtf+richtextbox2.RtfstringText应该是RTF文本,它应该有\RTF行一次,并且连接了富文本 剪贴板不在此处的范围内 另外,我很好奇,我们是否可以将它们反合并。试试这个: richTextBoxTarget.Select(richTextBoxTarget.TextLength, 0); richTextBoxTarget.SelectedRtf = r

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

剪贴板不在此处的范围内

另外,我很好奇,我们是否可以将它们反合并。

试试这个:

richTextBoxTarget.Select(richTextBoxTarget.TextLength, 0);
richTextBoxTarget.SelectedRtf = richTextBoxSource.Rtf;
这会将richTextBoxSource的内容合并到richTextBoxTarget的末尾。它只使用一个\RTF标记自动创建有效的RTF。

要取消合并,请同时使用
Select
SelectedRtf
。这里唯一的要求是,您需要知道要拆分的位置。

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

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
“”
''将提供的RTF格式字符串附加到提供的。
''' 
_
公共子附录RTF(ByVal rtbTextBox作为RichTextBox,ByVal strtf作为字符串)
rtbTextBox.Select(rtbTextBox.TextLength,0)
rtbTextBox.SelectedRtf=strRtf
端接头

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

这将是:

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

这很简单,也很好用。希望它能帮助某人:)

既然我不能评论Pawel anwser,我必须补充一点,除了他的代码:

RichTextBoxSource.Select(0,RichTextBoxSource.TextLength);
RichTextBoxTarget.SelectedRtf = richTextBoxSource.SelectedRtf;
如果希望新文本始终位于顶部,则应添加

RichTextBoxTarget.Select(0,0);
或者如果你希望它总是在底部

RichTextBoxTarget.Select(RichTextBoxTarget.TextLength,0);

因此,您也可以像Daniel answer中那样控制位置,即使目标richtextbox可单击。

如果您将此链接到我的上一个问题,将RTF转换为WordML,是的,它仍然未解决。XAML作为解决方案不适用于.net 2.0 winForms,虽然使用XML SDK是最后一个选项,但我的经理建议我使用,因为这需要时间。有人建议我在WordML中合并RTF丰富的字符串和取代基,并在WordML中转换这个新的RTF和demerge&insert。我知道这听起来不太好,但是,我必须准确地报告这一点。你能把RTF转换成WordML吗?如果我遇到这些问题,我可能会买一些Words,然后继续下一个项目。我向project推荐了这一点,但他们强制在内部构建一些东西。@Daniel Hilgarth,令人困惑的是,您的示例只显示了一个源,因此看起来您没有解决从两个源合并RTF的问题。@adrift:不,它没有。它包含两个来源。它将一个RTB的内容添加到另一个RTB的末尾,而另一个RTB又可以包含Rtf文本。嗨,丹尼尔,谢谢你的回答。但是,这里我的要求不同。这与我最初的要求有关:我仍然相信,我的回答确实对你有帮助。我不明白,你在另一个问题中的要求如何导致我的解决方案不起作用。你能解释一下吗?基本上,当您将Rtf文本分配给RichTextBox类的SelectedRtf属性时,它会将分配的Rtf数据流化到已经存在的数据中,从而导致两个Rtf数据的合并。根据你的问题,那正是你想要的。Rtf包含合并的Rtf。这正是您在问题中提出的问题:“stringText=richtextbox1.Rtf+richtextbox2.Rtf;”是的,先生,它合并了两个多个richtextboxes,但问题在于反合并。如何将它们反合并。我确实有他们的分离点。合并和反合并的目的是我想将word操作转换成WordML,然后进行分解。是否有一些标签或guardbit我可以附加的东西,以便我可以将它们反合并。