c# - VSTO Word 内容控制中的多行

标签 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;

但是当我在 Word 中选择/标记多行并尝试为它们添加内容控件时,我总是收到 ComException。是否允许或可能这样做?

最佳答案

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

相反,将多行分配给 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();

关于c# - VSTO Word 内容控制中的多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54023536/

相关文章:

c# - 无法使用客户端 ID 和密码访问用户照片

c# - 字符串连接/缩短算法

c# - 如何在更改端口 wss 时保留 SSL 的通用名称

c# - 如何通过 .NET Framework 应用程序以编程方式检查我的计算机上安装的 .NET Core 运行时版本?

c# - Selection.Find.Font.Position 允许十进制值

version-control - 文件名中的 TortoiseSVN/VisualSVN 服务器版本号

office365 - 我们如何使用 Office 365 java-script API 在撰写模式下读取邮件正文

c# - C#使用异步方法进行模型

excel - VSTO - Word 和 Excel 的共享插件以修改功能区

使用 Office 365 REST API 搜索电子邮件发件人地址