スペルチェックを使用したいインハウス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からスペルチェックダイアログをポップアップ表示し、任意のスペルミス
を検出したが、私は得ることができない。ここ
また、Word Docのこの「シェル」を修正したテキストで開いたままにします。それを表示しない、または少なくともそれを消さないにはどうすればいいですか?
2つのこと:
- まず、 "シェル" は毎回それ 点滅を閉じても。 への任意の解決策は?
- 第2に、スペルチェックダイアログで がTOPに表示されない場合は、 に設定するとどうなりますか?
おかげ
その他の質問:これを静的にしない理由はありますか? –
静的にしないと、特定のドキュメントやアプリケーションという言葉への参照を保持できます。それはあなたが新しいアプリやドキュメントの起動コストを避けるのに役立ちます。 (Visibleプロパティやアプリで遊んで、常に新しいアプリケーションを起動すると、文書を開いたままにしておくことができます) –
私は 'それでは、Wordのシェルが開いたままになります。 –