如何在不改变文档的情况下强调 Word 中的文本,就像在 Grammarly 中一样

How to emphasise text in Word, without alter the document, like in Grammarly

我正在为 Word(以及 Outlook)编写一个 VSTO 插件。我想强调文本的某些部分(检测到的错误)。据我所知,在 Microsoft.Office.Interop.Word 或其他库中没有 API 这种强调。

但是 Grammarly (www.grammarly.com) 已经找到了一种方法:

有谁知道如何用同样的方法做到这一点?

我认为最好的方法是将所需文本放入 Range,然后应用以下格式:

myRange.Font.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineThick;
myRange.Font.UnderlineColor = Microsoft.Office.Interop.Word.WdColor.wdColorRed;

这如何与 Grammerly 一起工作

正如之前在该问题的评论中指出的那样,添加重点的唯一方法是临时更改文档,这似乎是 Grammerly 以一种非常聪明的方式所做的事情。 Grammerly 仅在单击 Grammerly 功能区上的 Open Grammerly 按钮时才起作用。如果你做一个简单的实验,你或许可以观察到 Grammerly 是如何控制它的临时变化的。

首先创建一个未保存的文档,其中包含一些拼写错误的单词,显示为红色波浪线。然后单击 Open Grammerly 按钮。请注意,加载项关闭了拼写检查并将其替换为自己在文档中生成的网络触发标记,类似于上述代码生成的标记。然后保存文档。如果仔细观察,您会看到一个小的闪烁,其中红色粗下划线会短暂消失。那就是 Document.BeforeSave 事件在保存文档之前删除了他们的标记。通过依靠用户操作,Grammerly 控制标记出现的时间点。然后它使用代码和事件来确保标记不会与文档一起保存或干扰其他操作。

您可能想要查看的一些事件是:

Document.BeforeSave Event

Document.BeforePrint Event

Document.BeforeClose Event