我有一個內部Windows窗體應用程序,我想使用拼寫檢查。每個人都安裝了Office 2007,所以我不應該有一個問題,但我遇到問題這完全可以工作。在Windows窗體應用程序中執行Word拼寫檢查
以下是我有:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Word = Microsoft.Office.Interop.Word;
using System.Reflection;
namespace Refraction.Spelling
{
public static class SpellCheckers
{
public static string CheckSpelling(string text)
{
Word.Application app = new Word.Application();
object nullobj = Missing.Value;
object template = Missing.Value;
object newTemplate = Missing.Value;
object documentType = Missing.Value;
object visible = true;
object optional = Missing.Value;
object savechanges = false;
Word._Document doc = app.Documents.Add(ref template, ref newTemplate, ref documentType, ref visible);
doc.Words.First.InsertBefore(text);
Word.ProofreadingErrors errors = doc.SpellingErrors;
var ecount = errors.Count;
doc.CheckSpelling(ref optional, ref optional, ref optional, ref optional,
ref optional, ref optional, ref optional, ref optional, ref optional,
ref optional, ref optional, ref optional);
object first = 0;
object last = doc.Characters.Count - 1;
var results = doc.Range(ref first, ref last).Text;
doc.Close(ref savechanges, ref nullobj, ref nullobj);
app.Quit(ref savechanges, ref nullobj, ref nullobj);
return results;
}
}
}
我用這個像這樣:
memDirectionsToAddress.Text = SpellCheckers.CheckSpelling(memDirectionsToAddress.Text);
現在,這成功地從Word中彈出的拼寫檢查對話框,並檢測到任何拼寫錯誤的單詞
,但我不能讓它會在WinForm應用程序
中進行更正。
此外,它使Word文檔的這個「殼」打開並顯示正確的文本。我怎麼不顯示或至少讓它消失?
兩件事情:
- 首先,儘管 「殼」 關閉它 閃爍每次。任何解決方案 ?
- 其次,拼寫檢查對話框確實沒有出現在頂部 ,我能設置爲 正確嗎?
感謝
附加問題:是否有任何理由不使這個靜態? – 2009-08-31 16:30:45
如果您沒有將其設爲靜態,則可以保留對特定文檔和/或單詞應用程序的引用。這將幫助您避免新應用程序或文檔的啓動成本。 (您可以通過使用Visible屬性或應用程序並始終啓動一個新應用程序來保持文檔的打開狀態但不可見。) – 2009-08-31 17:46:43
問題是,如果我沒有執行'app.Close()'結束然後Word的殼保持打開.... – 2009-08-31 18:11:30