У меня есть собственное приложение Windows Form, которое я хотел бы использовать для проверки орфографии. У всех установлен 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 и обнаруживает любые слова с ошибками , но я не могу заставить его внести исправления в приложение WinForm.
Кроме того, эта «оболочка» документа Word остается открытой с исправленным текстом. Как мне этого не показать или хотя бы заставить его уйти?
Две вещи:
- Во-первых, хоть "оболочка" закрывает, то каждый раз мигает. Какие-нибудь решения для этого?
- Во-вторых, диалоговое окно проверки орфографии не отображается в ТОПе, что я могу настроить, чтобы исправить это?
Спасибо
app.Close()
в конце, оболочка Word останется открытой ... - person Refracted Paladin   schedule 31.08.2009object visible = true;
и добавитьapp.ShowMe();
. Ответ ниже помог мне сориентироваться, поэтому я принял его. - person Refracted Paladin   schedule 10.09.2009