【问题标题】:How to emphasise text in Word, without alter the document, like in Grammarly如何在 Word 中强调文本,而不改变文档,就像在 Grammarly 中一样
【发布时间】:2019-11-30 12:51:28
【问题描述】:

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

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

有谁知道你可以用同样的方法做到这一点吗?

【问题讨论】:

  • Word 已经自动用红线在拼写错误下划线。请解释这将如何以不同的方式运作或您认为需要它的原因。
  • 我检测到的错误不是拼写错误。语法示例显示拼写错误。我对如何在屏幕上强调文本的某些部分感兴趣。
  • Word 的拼写和语法标记不是对象模型的一部分,而是在 Office 程序中硬编码。如果不至少暂时更改文档,我看不到任何做你想做的事情的方法。所以你必须做一些事情,比如为你想要强调的短语设置一个范围,将该范围的语言设置更改为会导致 Word 将其标记为拼写错误的内容,然后在用户交互完成。

标签: ms-word vsto office-interop office-addins


【解决方案1】:

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

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

这将如何与 Grammerly 一起工作

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

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

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

Document.BeforeSave Event

Document.BeforePrint Event

Document.BeforeClose Event

【讨论】:

  • 如果我这样做,我会修改文档。正如我在标题中所写,我不想更改文档中的任何内容。
  • @AndersFinnJørgensen 请参阅上面的“这将如何与 Grammerly 一起工作”下的进一步说明。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
相关资源
最近更新 更多