[英]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”下看到任何下划線。 如果我轉到選項,我會看到“鍵入時檢查拼寫”選項已啟用:
現在,如果我檢查這個屬性:
wordApplication.ActiveDocument.SpellingErrors[0].Text
它將包含“texxt”,這意味着實際上已經檢查了拼寫。
此外,如果我只是重新啟動MS Word並輸入相同的文本 - 紅色下划線變為可見:
我還嘗試調用Application.ScreenRefresh並設置ScreenUpdating屬性,但這沒有任何效果。
注意:當文檔中沒有文本時,我在開頭運行此代碼/宏。 如果有一些文字 - 它有效。
注2:重現的確切步驟:
啟動MS Word。 轉到選項並禁用“在鍵入時檢查拼寫”。 重啟Word。
啟動Word並運行以下宏:
Options.CheckSpellingAsYouType = true Options.SuggestSpellingCorrections = true ActiveDocument.ShowSpellingErrors = true
鍵入以下文本:“測試texxt字符串。”。 按Enter鍵。
運行以下宏
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.