VSTO Word 加载项 - 在所选文本周围插入内容控件
Posted
技术标签:
【中文标题】VSTO Word 加载项 - 在所选文本周围插入内容控件【英文标题】:VSTO Word Add-in - insert Content Control around selected text 【发布时间】:2015-11-28 11:38:35 【问题描述】:我正在尝试在 Word 文档中围绕用户选定的文本添加富文本内容控件。
我是 VSTO 和内容控件的新手,所以我使用 MSDN 示例作为基线。该示例显示了这一点,它在所选位置添加了内容控件:
private void AddRichTextControlAtSelection()
word.Document currentDocument = Globals.ThisAddIn.Application.ActiveDocument;
currentDocument.Paragraphs[1].Range.InsertParagraphBefore();
currentDocument.Paragraphs[1].Range.Select();
Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument);
richTextControl1 = extendedDocument.Controls.AddRichTextContentControl("richTextControl1");
richTextControl1.PlaceholderText = "Enter your first name";
但是我希望内容控件环绕用户选择的文本。请帮忙?
【问题讨论】:
简单修复到底:currentDocument.ActiveWindow.Selection.Range.Select(); 如果您回答了自己的问题,请发布您的答案并接受。 【参考方案1】:您发现的是一种可能性。更有效和“更清洁”(IMO)将使用接受 RANGE 对象并传递 Range 的构造函数。如果你想要用户的选择,那么
richTextControl1 = extendedDocument.Controls.AddRichTextContentControl(extendedDocument.Parent.Selection.Range, "richTextControl1");
//the Parent of a Document is the Word.Application
//Selection is a dependent of the Word.Application
否则,在您的代码示例上构建:
richTextControl1 = extendedDocument.Controls.AddRichTextContentControl(currentDocument.Paragraphs[1].Range, "richTextControl1");
请注意,如果您不需要使用 VSTO 的内容控件扩展,则无需执行 GlobalFactory 步骤,您只需插入内容控件的“互操作”版本即可。
【讨论】:
【参考方案2】:最后简单修复:currentDocument.ActiveWindow.Selection.Range.Select();
【讨论】:
以上是关于VSTO Word 加载项 - 在所选文本周围插入内容控件的主要内容,如果未能解决你的问题,请参考以下文章