HTMLBody et WordEditor.La correction orthographique ne semble pas aimer les uns les autres sur inline réponse

StackOverflow https://stackoverflow.com//questions/25063598

Question

Alors, voici le problème.Quand une ligne de réponse est ouvert, je suis en mesure de le modifier sans problème.Ensuite, quand je lance la vérification de l'orthographe à travers la parole de l'éditeur, je perds la possibilité de modifier par le biais de la HMTLBody de l'e-mail.Je veux dire par là que si je fais quelque chose comme ceci:

email.HTMLBody = email.HTMLBody.Replace("cat", "dog");

il ne changera pas le corps de l'e-mail.Si j'en évidence email après les changements, HTMLBody montrera les changements, mais il n'apparaît pas dans l'e-mail.

Maintenant, si je fais tout de la première édition et alors faire la vérification orthographique, il va passer à travers tout le texte qui est mal, mais il ne changera pas d'e-mail de texte.Cela se produit uniquement pour corps de l'email par le chemin.Je peux changer le champ À:, CC: et Objet:les champs de l'amende juste pas quoi qu'il arrive.Il est également à seulement affecte le inline réponses et pas n'importe quel e-mail qui a surgi dans l'inspecteur.Je peux commencer à répondre en ligne, puis de la pop et le problème ne se produira pas.

C'est la façon dont je suis en train de faire la vérification de l'orthographe

Outlook.Inspector insp = email.GetInspector;
Word.Document Doc = insp.WordEditor;
if(!doc.SpellingChecked)
{
    doc.CheckSpelling();
    email.Save();
}

Si vous avez besoin d'informations laissez-moi savoir.

MODIFIER

Donc, en mettant un peu plus de réflexion sur ce que @Dimitri dit, j'ai décidé de revenir et de travailler sur l'utilisation de l' .WordEditor à partir de l'email.Ce sont les résultats.

J'ai été en mesure de modifier le corps de l'email assez bien en utilisant le mot de l'éditeur, mais il serait de reformater l'ensemble de l'e-mail (supprimer répondre/transférer des lignes de séparation) et la couleur de l'ensemble de l'e-mail avec la réponse de la couleur (bleu pour moi).J'ai été en mesure de corriger cela avec le en utilisant le début et la fin de la valeur dans le .Range du document comme suit:

Word.Document emailEditor = GetCurrentMailWordEditor(); // A function I use to retrieve the correct editor
Word.Range rng = emailEditor.Range(startIndex, endIndex); // To get only the specific part I want to change
rng.Text = rng.Text.Replace("cat", "dog");

au lieu de

Word.Document emailEditor = GetCurrentMailWordEditor();
Word.Range rng = emailEditor.Range();
rng.Text = rng.Text.Replace("cat", "dog");

La vérification de l'orthographe, j'ai été en mesure de résoudre par l'obtention de l' .WordEditor de la source correcte de la sorte:

Word.Document doc;
if(this.Application.ActiveInspector() != null)
{
    OutlookInspector insp = this.Application.GetActiveInspector();
    doc = insp.WordEditor;
}
else
{
    Outlook.Explorer exp = this.Applicaotn.GetActiveExplorer();
    doc = exp.ActiveInlineResponseWordEditor;
}

if(!doc.SpellingChecked)
{
    doc.CheckSpelling();
    email.Save();
}
Était-ce utile?

La solution

Si vous avez déjà une instance de la Parole de l'objet Document, pourquoi ne pas faire le remplacement de texte en utilisant le Modèle Objet Word ainsi?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top