J'ai une application de formulaire Windows interne dans laquelle j'aimerais utiliser la vérification orthographique. Tout le monde a installé Office 2007 alors je ne devrais pas avoir de problème, mais j'ai de la difficulté à obtenir ceci pour fonctionner pleinement.Implémenter l'orthographe Word dans l'application Windows Form
Voici ce que j'ai:
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;
}
}
}
J'utilise cette façon:
memDirectionsToAddress.Text = SpellCheckers.CheckSpelling(memDirectionsToAddress.Text);
Maintenant, ce qui ouvre avec succès le dialogue Vérification orthographique de Word et détecte les mots mal orthographiés
, mais je ne peux pas pour apporter les corrections dans l'application WinForm
.
En outre, il laisse ce «Shell» d'un document Word ouvert avec le texte corrigé. Comment ne pas montrer cela ou au moins le faire disparaître?
Deux choses:
- d'abord, bien que la "coquille" le ferme clignote à chaque fois. Des solutions à cela?
- Deuxièmement, le dialogue de vérification orthographique n'apparaît pas sur , que puis-je régler sur pour corriger cela?
Merci
Question supplémentaire: Y a-t-il une raison de ne PAS rendre STATIC? –
Si vous ne le rendez pas statique, vous pouvez conserver des références à un document spécifique et/ou au mot application. Cela vous aiderait à éviter les coûts de démarrage d'une nouvelle application ou d'un nouveau document. (Vous pouvez conserver un document ouvert mais invisible, en jouant avec la propriété Visible ou l'application et en démarrant toujours une nouvelle application.) –
le problème est que si je ne fais pas un 'app.Close()' à la fin puis un Shell de Word reste ouvert .... –