Я использую Word Spell Check в моем собственном приложении WinForm. Все мои клиенты - это все компьютеры под управлением XP с Office 2007, и случайным образом окно с предложением проверки орфографии появляется за приложением и заставляет все «казаться» замороженным, так как вы не можете получить его.
Предложения? Что делают другие люди, чтобы обойти это или вообще остановить?
Спасибо
Ниже приведен мой код для справки.
public class SpellCheckers
{
public 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 = false;
object optional = Missing.Value;
object savechanges = false;
app.ShowMe();
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);
Marshal.ReleaseComObject(doc);
Marshal.ReleaseComObject(app);
Marshal.ReleaseComObject(errors);
return results;
}
}
И я так называю это из своего приложения WinForm ->
public static void SpellCheckControl(Control control)
{
if (IsWord2007Available())
{
if (control.HasChildren)
{
foreach (Control ctrl in control.Controls)
{
SpellCheckControl(ctrl);
}
}
if (IsValidSpellCheckControl(control))
{
if (control.Text != String.Empty)
{
control.BackColor = Color.FromArgb(180, 215, 195);
control.Text = Spelling.CheckSpelling(control.Text);
control.Text = control.Text.Replace("\r", "\r\n");
control.ResetBackColor();
}
}
}
}