簡體   English   中英

MS Word自動化:無法為拼寫檢查啟用紅色下划線

[英]MS Word automation: can't enable red underlines for spelling check

我的代碼需要在MS Word 2010中啟用拼寫檢查,以便用戶可以在拼寫錯誤下看到紅色下划線。

在當前版本中,我嘗試執行此操作以啟用拼寫檢查:

wordApplication.Options.CheckSpellingAsYouType = true;
wordApplication.Options.SuggestSpellingCorrections = true;
wordApplication.ActiveDocument.ShowSpellingErrors = true;
wordApplication.ActiveDocument.CheckSpelling();

我打開Word並輸入“Test texxt string”。 在此之后我運行我的代碼但沒有任何反應: texxt字下沒有下划線

我沒有在“texxt”下看到任何下划線。 如果我轉到選項,我會看到“鍵入時檢查拼寫”選項已啟用: 在此輸入圖像描述

現在,如果我檢查這個屬性:

wordApplication.ActiveDocument.SpellingErrors[0].Text

它將包含“texxt”,這意味着實際上已經檢查了拼寫。

此外,如果我只是重新啟動MS Word並輸入相同的文本 - 紅色下划線變為可見: 在此輸入圖像描述

我還嘗試調用Application.ScreenRefresh並設置ScreenUpdating屬性,但這沒有任何效果。

注意:當文檔中沒有文本時,我在開頭運行此代碼/宏。 如果有一些文字 - 它有效。

注2:重現的確切步驟:

  1. 啟動MS Word。 轉到選項並禁用“在鍵入時檢查拼寫”。 重啟Word。

  2. 啟動Word並運行以下宏:

     Options.CheckSpellingAsYouType = true Options.SuggestSpellingCorrections = true ActiveDocument.ShowSpellingErrors = true 
  3. 鍵入以下文本:“測試texxt字符串。”。 按Enter鍵。

  4. 運行以下宏

    MsgBox ActiveDocument.SpellingErrors(1).Text

您將在MessageBox中看到“texxt”但不是紅色下划線

偶然發現以下解決方案:如果在用戶輸入某些文本后我調用以下代碼下划線顯示:

int iDummy = wordDocument.wordApp.ActiveDocument.SpellingErrors.Count;

我不能離開對奧列格的回答評論由於低聲望,但它是這里值得注意的是,與Word 2013,使用Application.ActiveDocument.SpellingErrors.Count方法似乎刪除當前選擇一些深不可測的原因,這可能是有問題的。

通過僅在當前未選擇文本時檢查Count來隱藏此效果的黑客攻擊; 例如:

// "document" is a Microsoft.Office.Tools.Word.Document
var selected = document.Application.Selection.Range;
if(Math.Abs(selected.End - selected.Start) == 0)
{
    var count = document.Application.ActiveDocument.SpellingErrors.Count;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM