小编Ole*_*leg的帖子

MS Word自动化:无法为拼写检查启用红色下划线

我的代码需要在MS Word 2010中启用拼写检查,以便用户可以在拼写错误下看到红色下划线.

在当前版本中,我尝试执行此操作以启用拼写检查:

wordApplication.Options.CheckSpellingAsYouType = true;
wordApplication.Options.SuggestSpellingCorrections = true;
wordApplication.ActiveDocument.ShowSpellingErrors = true;
wordApplication.ActiveDocument.CheckSpelling();
Run Code Online (Sandbox Code Playgroud)

我打开Word并输入"Test texxt string".在此之后我运行我的代码但没有任何反应: texxt字下没有下划线

我没有在"texxt"下看到任何下划线.如果我转到选项,我会看到"键入时检查拼写"选项已启用: 在此输入图像描述

现在,如果我检查这个属性:

wordApplication.ActiveDocument.SpellingErrors[0].Text
Run Code Online (Sandbox Code Playgroud)

它将包含"texxt",这意味着实际上已经检查了拼写.

此外,如果我只是重新启动MS Word并输入相同的文本 - 红色下划线变为可见: 在此输入图像描述

我还尝试调用Application.ScreenRefresh并设置ScreenUpdating属性,但这没有任何效果.

注意:当文档中没有文本时,我在开头运行此代码/宏.如果有一些文字 - 它有效.

注2:重现的确切步骤:

  1. 启动MS Word.转到选项并禁用"在键入时检查拼写".重启Word.

  2. 启动Word并运行以下宏:

    Options.CheckSpellingAsYouType = true
    Options.SuggestSpellingCorrections = true
    ActiveDocument.ShowSpellingErrors = true
    
    Run Code Online (Sandbox Code Playgroud)
  3. 键入以下文本:"测试texxt字符串.".按Enter键.

  4. 运行以下宏

    MsgBox ActiveDocument.SpellingErrors(1).Text

您将在MessageBox中看到"texxt"但不是红色下划线

c# automation vba ms-word word-vba

5
推荐指数
1
解决办法
3656
查看次数

C# BHO 从 Javascript 返回值

我有一个 C# BHO,它在文档中调用一些 JS 函数。通常我是这样做的(并且一切正常):

IHTMLWindow2 wnd;
//...
wnd.execScript("testMethod(\"testData\");");
Run Code Online (Sandbox Code Playgroud)

但是现在我需要将 JS 方法的值返回给我的 BHO。我实现了测试 JS 方法,它返回一个字符串,但是当我使用 execScript 时没有返回任何内容。我开始阅读有关 execScript 方法的文档,发现现在他们建议使用eval代替。

但是我找不到任何关于如何从我的 C# BHO 调用它的信息。我发现了这个问题,甚至还有 c# 示例,但它假定我托管 WebBrowser 控件并建议使用 Document.InvokeScript。在 MSHTML 中,所有 IHTMLDocument* 接口都没有 InvokeScript 方法。我错过了什么吗?

编辑 1:这是一个问题,哪种类型的答案如何从 execScript 获取返回值。但是,如果 MSDN 表示不再支持它,那么使用 execScript 可能并不明智。

编辑 2: 此问题的更多代码。首先,我有一个这样的 JS 函数(在一个名为 func.js 的文件中):

getElemHtml = function () {
    var myElem = document.getElementsByClassName("lineDiv")[0];
    // A lot more code goes here...
    alert(myElem.innerHTML);
    return myElem.innerHTML;
}
Run Code Online (Sandbox Code Playgroud)

然后在我的 BHO …

javascript c# internet-explorer bho mshtml

4
推荐指数
1
解决办法
1565
查看次数

标签 统计

c# ×2

automation ×1

bho ×1

internet-explorer ×1

javascript ×1

ms-word ×1

mshtml ×1

vba ×1

word-vba ×1