2012-02-16 3 views
1

Я пытаюсь использовать слово для автоматического исправления текста, который не является на английском языке, проблема заключается в том, что когда я использую функцию проверки орфографии, диалоговое окно «Spell and Grammar» появляется и ждет ввода пользователей и я хочу, чтобы текст был исправлен автоматически. Итак, мой вопрос: как я могу это решить?AutoCorrect Text C# Word

using System.Collections.Generic; 
using Microsoft.Office.Interop.Word; 
using Word = Microsoft.Office.Interop.Word; 
using TobyCL.ro.toby.StringOperations; 
namespace namespace.ro.toby 
{ 
    class WordProofing:IProof 
    { 
     private readonly Word.Application _wordApp; 
     private readonly Word.Document _wordDoc; 
     private static object _oEndOfDoc = "\\endofdoc"; 
     public WordProofing() 
     { 

      _wordApp = new Word.Application {Visible = false}; 
      _wordDoc = _wordApp.Documents.Add(); 
     } 
     public void Close() 
     { 
      object obj = Word.WdSaveOptions.wdDoNotSaveChanges; 
      _wordDoc.Close(ref obj); 
      _wordApp.Quit(ref obj); 
     } 
     #region Implementation of IProof 

     public string Proof(string proofText) 
     { 
      Range wRng = _wordDoc.Bookmarks.get_Item(ref _oEndOfDoc).Range; 
      wRng.Text = proofText; 
      _wordDoc.CheckSpelling(IgnoreUppercase: true,AlwaysSuggest:false); 
      string str = wRng.Text; 
      wRng.Text = ""; 
      return str; 
     } 
     #endregion 
    } 
} 

Я написал этот код несколько дней назад, и это сработало. Проблема в том, что я удаляю инструменты проверки, чтобы запускать некоторые тесты, и теперь я продолжаю получать этот диалог, поэтому я думаю, что мне нужно установить некоторые настройки Word или я что-то изменил в своем коде, не зная. Любая помощь будет принята с благодарностью.

Я использую Microsoft Office Word 2010

ответ

2

Для тех, кому это может быть интересно, это то, как я смог его решить, но на самом деле требуется много времени, поэтому любые улучшения или новые идеи приветствуются.

using Microsoft.Office.Interop.Word; 
    class WordProofing 
    { 
     private Application _wordApp; 
     private readonly Document _wordDoc; 
     private static object _oEndOfDoc = "\\endofdoc"; 
     public WordProofing() 
     { 

      _wordApp = new Application { Visible = false }; 
      _wordDoc = _wordApp.Documents.Add(); 
     } 
     public void Close() 
     { 
      _wordDoc.Close(WdSaveOptions.wdDoNotSaveChanges); 
      _wordApp.Quit(); 
     } 

     public string Proof(string proofText) 
     { 
      Range wRng = _wordDoc.Bookmarks.get_Item(ref _oEndOfDoc).Range; 
      wRng.Text = proofText; 
      ProofreadingErrors spellingErros = wRng.SpellingErrors; 
      foreach (Range spellingError in spellingErros) 
      { 
       SpellingSuggestions spellingSuggestions = 
        _wordApp.GetSpellingSuggestions(spellingError.Text,IgnoreUppercase:true); 

       foreach (SpellingSuggestion spellingSuggestion in spellingSuggestions) 
       { 
        spellingError.Text = spellingSuggestion.Name; 
        break; 
       } 
      } 

      string str = wRng.Text; 
      wRng.Text = ""; 
      return str; 
     } 
    } 
0

Какую версию MS Word вы используете?

По умолчанию проверка орфографии покажет вам диалоговое окно. Чтобы отключить диалоговое окно, я знаю два способа.

1) Используя код, автоматически выбирайте первый вариант из Auto Correct.

Это что-то вроде этого

AutoCorrect.Entries.Add Name:="AdSAD", Value:="Assad" 

2) Или используйте опцию меню. См. Эту ссылку.

Тема: Автоматически правильное написание со словами из основного словаря

Ссылка: http://office.microsoft.com/en-us/word-help/automatically-correct-spelling-with-words-from-the-main-dictionary-HA010174790.aspx

дайте мне знать, если это не то, что вы хотите?

+0

опция меню Allready установлен и я до сих пор продолжаю получать диалог, как и для первого варианта я не rewlly получить его я заинтересован в использовании предложения, предоставляемые слова NIT самостоятельно. – trebor