ms-word - 如何在 Word 中强调文本,而不改变文档,就像在 Grammarly 中一样
问题描述
我正在为 Word(以及 Outlook)编写一个 VSTO 插件。我想强调文本的某些部分(检测到的错误)。据我所知,在 Microsoft.Office.Interop.Word 或其他库中没有这种强调的 API。
但是 Grammarly (www.grammarly.com) 找到了一种方法:
有谁知道你怎么能以同样的方式做到这一点?
解决方案
我相信最好的方法是将所需的文本放入 aRange
然后应用以下格式:
myRange.Font.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineThick;
myRange.Font.UnderlineColor = Microsoft.Office.Interop.Word.WdColor.wdColorRed;
这将如何与 Grammerly 一起使用
正如之前在问题的评论中指出的那样,添加重点的唯一方法是临时更改文档,这似乎是 Grammerly 以非常聪明的方式做的事情。Grammerly 仅在单击Open Grammerly
Grammerly 功能区上的按钮时才有效。如果你做一个简单的实验,你也许可以观察到 Grammerly 是如何控制它的临时变化的。
首先创建一个未保存的文档,其中包含一些显示波浪红线的拼写错误的单词。然后单击Open Grammerly
按钮。请注意,加载项关闭拼写检查并将其替换为在文档中生成的它自己的 Web 触发标记,类似于上面代码生成的标记。然后保存文档。如果你仔细看,你会看到一个小小的闪烁,红色粗下划线消失了片刻。那是Document.BeforeSave
在保存文档之前删除他们的标记的事件。通过依赖用户操作,Grammerly 控制标记出现的时间点。然后它使用代码和事件来确保标记不会与文档一起保存或干扰其他操作。
您可能想要查看的一些事件是:
推荐阅读
- c - 1 [主] MyTask 12376 _cygtls::handle_exceptions:异常:STATUS_ACCESS_VIOLATION
- html - 替换html输入中的引号
- javascript - 为什么 JSON 编码返回空数组?
- eclipse - 如何在 Eclips IDE 中导出 Spring Boot Gradle 项目?
- java - 对 java 同步块感到困惑
- verilog - 在始终梳状块中分配输出时出错 System Verilog
- r - 从 SQL 到 R 的 NULL 值
- haskell - 有没有办法将多态函数应用于 Haskell 中具有不同参数类型的对象数量?
- flutter - 基于屏幕尺寸的网格高度
- java - 仅允许数字(0-9)、单个逗号(,)和多个点(.)的正则表达式。示例:10.000.100,00--有效 10,000,100.00--无效