VSTO Word在内容控制中多行

时间:2019-01-03 13:45:53

标签: c# ms-word office365 vsto

是否可以在多行中添加内容控制?

目前,我正在像这样添加内容控件:

bm = doc.Bookmarks.Add("bookmark", app.Selection.Range);
ContentControl cc = doc.ContentControls.Add(WdContentControlType.wdContentControlRichText, bm.Range);
cc.MultiLine = true;
cc.Tag = _BOOKMARK;

但是当我在单词中选择/标记多行并尝试为其添加内容控件时,总是会收到ComException。是否可以这样做?

1 个答案:

答案 0 :(得分:1)

据我所知,在文档中已有的文本行周围插入内容控件是行不通的。

相反,将多行分配给Range对象。插入内容控件,然后使用Range.FormattedText属性将这些行“复制”到其中。向后删除Range。像这样的东西(当我在移动设备上时,在我的头顶上键入)

Word.Range rngSel = app.Selection.Range;
bm = doc.Bookmarks.Add("bookmark", rngSel);
Word.Range rngCC = rngSel.Duplicate;
//Insert the content control immediately after the selection, for example
rngCC.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
ContentControl cc = doc.ContentControls.Add(WdContentControlType.wdContentControlRichText, rngCC);
cc.MultiLine = true;
cc.Tag = _BOOKMARK;
cc.Range.FormattedText = rngSel.FormattedText;
RngSel.Delete();