可用于:用户界面的ASP。NET MVC | 用户界面的ASP。净AJAX | Blazor用户界面 | WPF的用户界面 | WinForms的UI | Xamarin的UI | WinUI的用户界面 | 用户界面的ASP。网络核心 | .NET MAUI的用户界面

Telerik文档处理?下载30天免费试用

RadFlowDocumentEditor

虽然RadFlowDocument可以通过使用文档元素的样式属性和子集合来创建和修改,这可能非常麻烦。RadFlowDocumentEditor目的是简化这个过程,用更少的代码实现相同的结果。当以正确的顺序插入两个文档元素以确保文档的完整性时,它也很有用——例如,在插入字段、超链接、图像等时。

创造与定位

RadFlowDocumentEditor始终与单个文档关联,在创建时将其作为构造函数参数。

例1:创建一个RadFlowDocumentEditor

RadFlowDocument文档= this.CreateDocument();RadFlowDocumentEditor编辑器=新的RadFlowDocumentEditor(文档);

编辑器在文档中维护一个内部位置。这个位置可以指向段落内(行内),也可以直接指向表格元素的末尾。下面是更改编辑器在文档中的位置的可用方法列表:

  • MoveToInlineStart (InlineBase内联)

  • MoveToInlineEnd (InlineBase内联)

  • MoveToParagraphStart(第一段)

  • MoveToTableEnd表(表)

来自的代码示例2演示如何将编辑器定位在文档第一段的第二行内。

例2:更改RadFlowDocumentEditor的位置

段落firstParagraph = document.EnumerateChildrenOfType<段落>().First();editor.MoveToInlineEnd (firstParagraph.Inlines [1]);

注意,可以创建一个RadFlowDocumentEditor对于空文档(没有章节的文档)。在这种情况下,在调用插入方法时自动创建节和段。示例3创建一个包含一个段落的文档,该段落的文本为“Hello word!”

例3:在文档中插入文本

RadFlowDocumentEditor编辑器=新的RadFlowDocumentEditor(新的RadFlowDocument());编辑器。InsertText(“你好词!”);

插入文档元素

的大多数插入方法RadFlowDocumentEditor返回新插入的元素。这样,如果需要,您可以设置元素的一些附加属性。

插入文本

插入文本运行可采用以下方法:

  • public执行InsertText(string text):插入一个新的运行与当前段落中的给定文本相匹配。

  • public运行InsertLine(string text):插入一个新的运行在当前段落中使用给定的文本,并开始一个新的段落。

这两个方法都返回新插入的数据运行元素。但是,如果text参数中有新行,则为每一行插入一个新段落。在本例中,返回的运行是插入的最后一个运行。

中的代码示例4插入包含新行的运行。

例4:用新行插入运行

编辑器。InsertText("First" +环境。NewLine +“Second”);

结果如下所示图1所示。

图1

Rad文字处理编辑Rad流程文档编辑器01

当前的CharacterFormattingParagraphFormatting为创建的每个Run和段落应用。

插入段落

你可以重新开始InsertParagraph ()方法。当前的ParagraphFormatting应用于新段并返回该段。

例5:插入一个段落

编辑器。InsertText(第一段);editor.InsertParagraph ();编辑器。InsertText(第二段);

图2显示结果如何从示例5的样子。

图2:示例5中插入的内容

Rad文字处理编辑Rad流程文档编辑02

如果你打电话InsertParagraph ()当编辑器位于段落中间时,该位置后的所有内联都将移动到新段落中。在文本编辑器应用程序中,当光标位于段落中间时,其效果与按Enter键相同。

插入部分

插入部分元素可以通过InsertSection ()方法。将添加具有新节属性的段落,并添加新的部分元素将返回。

例6:插入一个section

editor.InsertSection ();

如果你致电InsertSection ()方法,而编辑器位于TableCell中,则该表将在当前行被分割。这意味着,如果表包含3行,而编辑器位于第二行的单元格中,则表将被分割为两个表——一个有一行,将被添加到前一节,另一个有2行(包含编辑器位置所在的TableCell)。后者将被添加到新插入的Section中。

超链接RadFlowDocument模型实际上是字段,这意味着它们的代码和结果部分由FieldCharacter内联。插入超链接被简化了RadFlowDocumentEditor.InsertHyperlink ()方法:

(string text, string uri, bool isAnchor, string toolTip)

类中没有显式设置样式,则会自动将"Hyperlink"内置样式应用于插入的超链接CharacterFormatting编辑器的选项。

例7:插入一个超链接

编辑器。InsertHyperlink(“telerik”、“//www.aliitrade.com, false,“Telerik site”);

图3:超链接

Rad文字处理编辑Rad流程文档编辑03

插入代码字段

字段的插入可以使用InsertField ()方法,该方法接受代码和结果片段:

InsertField(字符串代码,字符串结果)

示例8演示如何在文档头中添加页码:

例8:在页眉中添加页码

//创建header并移动编辑器header header = document.Sections[0].Headers.Add();editor.MoveToParagraphStart (header.Blocks.AddParagraph ());编辑器。InsertText(“页面”);编辑器。InsertField(“页面”,“1”);编辑器。InsertText(" of ");编辑器。InsertField(“NUMPAGES”,“1”);

图4:示例8中插入的页编号

Rad文字处理编辑Rad流程文档编辑04

注意,在这种情况下,当在MS Word中打开文档时,结果会自动更新,因为页面字段位于文档的头部。

您可以在Office Open XML标准文档中找到一个广泛的字段代码列表ecma - 376第4版,2012年12月,第17.16.6章字段定义。

插入图片

RadFlowDocumentEditor提供用于插入的几个方法ImageInlineFloatingImage.它们都返回插入的图像元素,以便对其进行其他操作。

  • InsertImageInline(ImageSource source, Size Size)

  • InsertImageInline(流,字符串扩展,大小大小)

  • InsertFloatingImage(ImageSource source, Size Size)

  • InsertFloatingImage(流流,字符串扩展,大小大小)

例9展示了如何使用流插入图像:

例9:从流中插入图像

editor.InsertText(“形象:”);使用(Stream Stream = this.GetResourceStream("Telerik_logo.png")){编辑器。InsertImageInline(流,"png",新的大小(118,28));}

图5:示例9中插入的图像

Rad文字处理编辑Rad流程文档编辑05

插入表

可以使用以下方法进行插入表格在文件中:

  • public Table InsertTable():在文档中插入一个空表。
  • public Table InsertTable(int rows, int columns):插入指定行数和列数的表。

属性指定的格式TableFormatting属性应用于插入的表。在插入操作之后,编辑器会自动直接放置插入的表(不在其中)。

下面是如何插入一个内置样式为"TableGrid"的表格:

例10:插入一个具有样式的表

document.StyleRepository.AddBuiltInStyle (BuiltInStyleNames.TableGridStyleId);editor.TableFormatting.StyleId = BuiltInStyleNames.TableGridStyleId;编辑器。InsertText(“表之前。”);编辑器。InsertTable(2、4);编辑器。表后InsertText(“。”);

图6:文档中的表格

Rad文字处理编辑Rad流程文档编辑06

DocumentElementImporter类允许您将文档元素从一个文档导入到另一个文档。请检查这篇文章有关此功能的更多信息。

改变当前样式

类的插入方法时RadFlowDocumentEditor编辑器创建不同的文档元素。您可以通过以下属性控制新创建元素的格式:

  • CharacterFormatting:此格式应用于所有新创建的格式运行元素。控件中未设置样式时,才会将“Hyperlink”内置样式应用于生成的片段CharacterFormatting

  • ParagraphFormatting:此格式应用于所有新创建的格式元素。这也包括插入的段落InsertText ()InsertLine ()方法。

  • TableFormatting:此格式应用于所有新创建的格式表格元素。

当插入多个样式一致的元素时,格式化选项最有用。例如,来自的代码例11插入多个段落,段落之间没有空格,文本(运行)为"Consolas"字体:

例11:插入具有指定样式的内容

//设置代码块格式化var codeFont = new ThemableFontFamily(new FontFamily("Consolas"));editor.CharacterFormatting.FontFamily.LocalValue = codeFont;editor.ParagraphFormatting.SpacingAfter.LocalValue = 0;编辑器。InsertLine("static void Main(string[] args)");editor.InsertLine(“{”);编辑器。InsertLine(“控制台。WriteLine(\“Hello World \”);”);editor.InsertLine(“}”);

图7:示例11中插入的内容

Rad文字处理编辑Rad流程文档编辑07

删除内容

例12:删除现有元素之间的内容

var document = new RadFlowDocument();var editor = new RadFlowDocumentEditor(文档);editor.InsertParagraph ();var startRun = editor.InsertText("Start");editor.InsertParagraph ();var middleRun = editor.InsertText("Middle");editor.InsertParagraph ();var endRun = editor.InsertText("End");编辑器。deleteccontent (startRun, endRun, false);
上述方法将删除“start”和“end”元素之间的所有内容。您可以通过最后一个参数选择是否删除“start”和“end”元素。

另请参阅

在本文中
Baidu
map