【问题标题】:I am integrating Spell Checker for my application我正在为我的应用程序集成拼写检查器
【发布时间】:2011-11-25 21:01:46
【问题描述】:

您好,我正在为我的 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");

        }

    }

对象不包含文档的定义。这是我正在构建的错误。我已经在 c# 中成功包含了 Microsoft.Office.Interop.Word 的参考


我尝试了你的建议,虽然它很好,但对我没有用。现在它抛出了新的异常

objTempDoc = objWord.Documents.Add();

例外:Add 方法没有重载需要 '0' 参数。

有什么建议吗?

【问题讨论】:

  • 经过反思,您为什么要将运行良好的 vb.net 代码转换为 C#?目前,vb.net 更适合使用 office interop。你可以很容易地从 c# 调用 vb.net 代码。
  • 在 Stack Overflow 上查看我的 How to Answer[1]。 [1]:stackoverflow.com/a/31969800/1690709

标签: c# office-2007


【解决方案1】:

你有什么理由不使用aspell.net? Office 互操作有点繁琐。

【讨论】:

  • +1 虽然我发现 nhunspell.sourceforge.net 更容易使用
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    相关资源
    最近更新 更多