VSTO Word加载项 - 在所选文本周围插入内容控件

时间:2015-11-28 11:38:36

标签: c# ms-word vsto word-contentcontrol

我试图围绕用户在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";
        }

但是我希望Content Control能够包含用户选择的文本。有什么帮助吗?

2 个答案:

答案 0 :(得分:0)

最后的简单修复:currentDocument.ActiveWindow.Selection.Range.Select();

答案 1 :(得分:0)

你发现的是一种可能性。更高效和“更清洁”(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步骤,只需插入内容控件的“互操作”版本。