拼写检查使用单词

时间:2012-02-27 12:29:02

标签: c# office-interop

我正在使用c#编写代码以进行拼写检查。我在网上找到了这个代码。我是c#的新手,无法理解代码。

我在以下网站上找到了此代码: http://www.codeproject.com/Articles/4572/Using-Word-s-spellchecker-in-C

我可以直接了解代码实际发生的一般指导原则:

using Word;

using System.Reflection;


private void button1_Click(object sender, System.EventArgs e) 

{ 

    fSpellCheck(textBox1 , label1 ); 

}



public void fSpellCheck(TextBox tBox, Label lLbl) 

{ 

    int iErrorCount = 0; 

    Word.Application app = new Word.Application(); 

    if (tBox.Text.Length > 0) 

    { 

        app.Visible=false; 

        // Setting these variables is comparable

        // to passing null to the function. 

        // This is necessary because the C# null

        // cannot be passed by reference. 

        object template=Missing.Value; 

        object newTemplate=Missing.Value; 

        object documentType=Missing.Value; 

        object visible=true; 

        object optional = Missing.Value; 

        _Document doc = app.Documents.Add(ref template, 

           ref newTemplate, ref documentType, ref visible); 

        doc.Words.First.InsertBefore (tBox.Text ); 

        Word.ProofreadingErrors we = doc.SpellingErrors; 

        iErrorCount = we.Count; 

        doc.CheckSpelling( ref optional, ref optional, ref optional, 

            ref optional, ref optional, ref optional, ref optional, 

            ref optional, ref optional, ref optional, 

            ref optional, ref optional); 

        if (iErrorCount == 0) 

            lLbl.Text = "Spelling OK. No errors corrected "; 

        else if (iErrorCount == 1) 

            lLbl.Text = "Spelling OK. 1 error corrected "; 

        else 

            lLbl.Text = "Spelling OK. " + iErrorCount + 

                                    " errors corrected "; 

        object first=0; 

        object last=doc.Characters.Count -1; 

        tBox.Text = doc.Range(ref first, ref last).Text; 

    } 

    else 

        lLbl.Text = "Textbox is empty"; 
    object saveChanges = false; 

    object originalFormat = Missing.Value; 

    object routeDocument = Missing.Value; 

    app.Quit(ref saveChanges, ref originalFormat, ref routeDocument); 

}

2 个答案:

答案 0 :(得分:0)

这基本上就是上面的代码。

1)以隐藏模式打开一个新的Word实例 2)它将文本框中的文本插入文档的第一部分 3)它调用word文档上的拼写检查器 4)它从拼写检查器获取错误计数,并将错误数量打印到您的标签
5)它要求Word更正文档中的错误。
6)它将修正后的文本从word文档复制回文本框
7)它关闭文档并退出隐藏的Word实例。

您在项目中需要做什么:
1.创建标签(如果您还没有标签)
2.创建一个文本框(如果你还没有) 3.创建一个按钮(如果您还没有按钮)

向您的按钮添加一个点击事件,并在该代码中,调用 fSpellCheck ,就像在此代码中完成一样,将您的标签和文本框作为参数。

答案 1 :(得分:0)

我对C#没什么经验,但我想你有一个带GUI的应用程序,带有按钮,标签和文本框。

需要方法button1_Click来为按钮分配动作,单击时,按钮的某种事件侦听器。 单击此按钮时,将执行button1_Click,并调用方法fSpellCheck(textBox1 , label1 );

方法fSpellCheck(textBox1 , label1 );实现了检查单词的算法,由文本框插入(请注意fSpellCheck参数中的文本框引用)。该方法检查单词是否有错误,如果单词正确或错误(有错误)或文本框为空,则该方法在标签lLbl中打印单词控制的结果。