我有一个内部 windows 窗体应用程序,我想使用拼写检查。每个人都安装了 Office 2007,所以我不应该有问题,但我无法让它完全工作。
这是我所拥有的:
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 中弹出 SpellCheck 对话框并检测到任何拼写错误的单词,但我无法让它在 WinForm 应用程序中进行更正。
此外,它使 Word Doc 的这个“外壳”打开,并带有更正的文本。我如何不显示或至少让它消失?
两件事情:
- 首先,虽然“shell”关闭了它,但它每次都会闪烁。有什么解决办法吗?
- 其次,拼写检查对话框没有出现在 TOP 上,我可以设置什么来纠正它?
谢谢