2009-11-16 3 views
1

Привет Я создаю средство проверки орфографии для моего приложения C#. Я использую Microsoft.Office.Interop.Word; dll, но с ошибкой.Я интегрирую Spell Checker для своего приложения

Я проверил мой код в VB.Net, и это работает FI9, но теперь я должен C# и имеющие ошибки в своем коде

private void SpellOrGrammarCheck(bool blnSpellOnly) 
    { 

     try 
     { 
      object objWord; 
      object objTempDoc; 
      IDataObject iData; 

      if (TextBox1.Text == "") 
      { 
       return; 
      } 

      objWord = new Microsoft.Office.Interop.Word.Application(); 
      objTempDoc = objWord.Documents.Add(); 
      objWord.Visible = false; 

      objWord.WindowState = 0; 
      objWord.Top = - 3000; 

      Clipboard.SetDataObject(TextBox1.Text); 

      objTempDoc.Content.Paste(); 
      objTempDoc.Activate(); 
      if (blnSpellOnly) 
      { 
       objTempDoc.CheckSpelling(); 
      } 
      else 
      { 
       objTempDoc.CheckGrammar(); 
      } 
      objTempDoc.Content.Copy(); 
      iData = Clipboard.GetDataObject(); 
      if (iData.GetDataPresent(DataFormats.Text)) 
      { 
       TextBox1.Text = System.Convert.ToString(iData.GetData(DataFormats.Text, System.Convert.ToBoolean(null))); 
      } 
      objTempDoc.Saved = true; 
      objTempDoc.Close(); 

      objWord.Quit(); 

      MessageBox.Show("The spelling check is complete.", "Spell Checker", MessageBoxButtons.OK, MessageBoxIcon.Information); 

     } 
     catch (System.Runtime.InteropServices.COMException) 
     { 
      MessageBox.Show("Microsoft Word must be installed for Spell/Grammar Check " + "to run.", "Spell Checker"); 

     } 
     catch (Exception) 
     { 
      MessageBox.Show("An error has occurred.", "Spell Checker"); 

     } 

    } 

Объект doestnot содержит определение документа. Это ошибка, которую я получаю от строительства. У меня есть включают Отнесение Microsoft.Office.Interop.Word успешно в C#


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

objTempDoc = objWord.Documents.Add();

Исключение: нет перегрузки для метода Add принимает аргументы «0».

Любое предложение?

+0

И эти ошибки? – RobS

+0

Что касается рефлексии, почему вы конвертируете совершенно хороший рабочий код vb.net в C#? На данный момент vb.net больше подходит для работы с офисным взаимодействием. Вы можете легко вызвать код vb.net из C#. – RobS

+0

Проверьте мой [ответ] [1] при переполнении стека. [1]: http://stackoverflow.com/a/31969800/1690709 –

ответ

0

C# не поддерживает позднюю привязку. Вы должны объявить objWord как Microsoft.Office.Interop.Word.Application вместо объекта. Dito для objTempDoc (независимо от типа Documents.Add).

1

Есть ли причина, по которой вы не используете aspell.net? Офисное взаимодействие, ну, немного неудобно.

+0

+1 Хотя я считаю nhunspell.sourceforge.net быть проще в использовании – Tinister

Смежные вопросы