2009-11-16 30 views
1

嗨,我正在为我的c#应用程序创建拼写检查器。我正在使用Microsoft.Office.Interop.Word; DLL但有错误。我正在为我的应用程序集成拼写检查器

我已经测试我的代码在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 2009-11-16 09:20:31

+0

经过反思,你为什么要将完美的工作vb.net代码转换为C#?目前,vb.net更适合与办公室互操作。 YOu可以很容易地从c#调用vb.net代码。 – RobS 2009-11-16 21:41:11

+0

在Stack Overflow检查我的[答] [1]。 [1]:http://stackoverflow.com/a/31969800/1690709 – 2015-08-12 17:24:44

回答

0

C#不支持后期绑定。您必须将objWord声明为Microsoft.Office.Interop.Word.Application而不是object。 Dito for objTempDoc(无论类型Documents.Add返回)。

1

有什么理由不使用aspell.net?办公室interop是,有一点小巧。

+0

+1虽然我觉得nhunspell.sourceforge.net更容易使用 – Tinister 2009-11-16 19:41:44