Я интегрирую проверку орфографии для своего приложения - PullRequest
1 голос
/ 16 ноября 2009

Привет, я создаю Spell Checker для моего приложения на 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");

        }

    }

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


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

objTempDoc = objWord.Documents.Add ();

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

Есть предложения?

Ответы [ 2 ]

1 голос
/ 16 ноября 2009

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

0 голосов
/ 16 ноября 2009

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

...