我有两个字符串(RTF),我必须以某种方式合并 - 在两个之间插入一个新行 - ,以在UWP中的RichEditBox中显示。我已经阅读了一个解决方法,通过使用两个RichTextBox控件来完成两者的合并,但在UWP中,这不是一个真正的选项(我也无法在两个RichEditBox控件中显示两个RTF)。是否有其他方法,不使用第三方库?
答案 0 :(得分:2)
使用RichEditBox class时,我们可以通过利用来合并两个RTF ITextDocument interface和ITextRange interface。以下是一个简单的示例:
var rtf1 = @"{\rtf1{\fonttbl{\f0 Verdana;}{\f1 Arial;}{\f2 Verdana;}{\f3 Calibri;}}{\colortbl;\red255\green255\blue255;\red255\green0\blue0;}\f0\cf2 This is red text marked by Verdana font.\par}";
// Sets rtf1 as the content of the document
editor.Document.SetText(Windows.UI.Text.TextSetOptions.FormatRtf, rtf1);
// Get a new text range for the active story of the document.
var range = editor.Document.GetRange(0, rtf1.Length);
// Collapses the text range into a degenerate point at the end of the range for inserting.
range.Collapse(false);
var rtf2 = @"{\rtf1{\fonttbl{\f0 Times New Roman;}}{\colortbl;\red255\green255\blue255;\red0\green0\blue255;}\f0\cf2 This is blue text marked by Times New Roman font.\par}";
// Inserts rtf2
range.SetText(Windows.UI.Text.TextSetOptions.FormatRtf, rtf2);
//var newrtf = string.Empty;
//editor.Document.GetText(Windows.UI.Text.TextGetOptions.FormatRtf, out newrtf);
//System.Diagnostics.Debug.WriteLine(newrtf);
这会将rtf2合并到rtf1的末尾,它会自动创建一个新的有效RTF。您可以使用ITextDocument.GetText method检索新的RTF。