我正在为我的应用程序集成拼写检查器

时间:2009-11-16 09:19:12

标签: c# office-2007

您好我正在为我的c#应用程序创建拼写检查器。我正在使用Microsoft.Office.Interop.Word; dll但有错误。

我已经在VB.Net中测试了我的代码并且它正在运行,但现在我必须使用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不包含Document的定义。这是我正在构建的错误。我在c#

中成功包含了Microsoft.Office.Interop.Word的Reference

我尝试了你的建议虽然它很好但是对我不起作用。现在它正在抛出新的异常

objTempDoc = objWord.Documents.Add();

异常:方法Add没有重载需要'0'参数。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

你有没有理由不使用aspell.net?办公室互操作,有点繁琐。

答案 1 :(得分:0)

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