2009-11-16 37 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