我在我的应用程序中使用 NetSpell 以提供拼写检查。除了 NetSpell 的一项功能外,一切都运行良好。这是“替换单词”功能(拼写检查器中的一个重要功能,是吗?)。
代码如下:
private NetSpell.SpellChecker.Spelling spelling;
private NetSpell.SpellChecker.Dictionary.WordDictionary wordDictionary;
internal System.Windows.Forms.Button spellButton;
internal System.Windows.Forms.RichTextBox demoRichText;
private System.ComponentModel.IContainer components2;
internal System.Windows.Forms.RichTextBox Document;
internal NetSpell.SpellChecker.Spelling SpellChecker;
private System.ComponentModel.IContainer components1;
internal NetSpell.SpellChecker.Dictionary.WordDictionary WordDictionary;
启动拼写检查:
private void toolStripButton1_Click(object sender, EventArgs e)
{
try
{
if (richTextBoxPrintCtrl1.Text == null)
{
MessageBox.Show("There is no text to check. Spellcheck will not be launched", "No Text", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
else
{
this.spelling1.Text = this.richTextBoxPrintCtrl1.Text;
this.spelling1.SpellCheck();
}
}
catch (Exception ex)
{
MessageBox.Show("Error loading Spell Checker. Please reload application and try again. " + ex.Message, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
替换单词:
private void spelling_ReplacedWord(object sender, NetSpell.SpellChecker.ReplaceWordEventArgs e)
{
int start = this.richTextBoxPrintCtrl1.SelectionStart;
int length = this.richTextBoxPrintCtrl1.SelectionLength;
this.richTextBoxPrintCtrl1.Select(e.TextIndex, e.Word.Length);
this.richTextBoxPrintCtrl1.SelectedText = e.ReplacementWord;
if (start > this.richTextBoxPrintCtrl1.Text.Length)
start = this.richTextBoxPrintCtrl1.Text.Length;
if ((start + length) > this.richTextBoxPrintCtrl1.Text.Length)
length = 0;
this.richTextBoxPrintCtrl1.Select(start, length);
}
删除单词:
private void spelling_DeletedWord(object sender, NetSpell.SpellChecker.SpellingEventArgs e)
{
int start = this.richTextBoxPrintCtrl1.SelectionStart;
int length = this.richTextBoxPrintCtrl1.SelectionLength;
this.richTextBoxPrintCtrl1.Select(e.TextIndex, e.Word.Length);
this.richTextBoxPrintCtrl1.SelectedText = "";
if (start > this.richTextBoxPrintCtrl1.Text.Length)
start = this.richTextBoxPrintCtrl1.Text.Length;
if ((start + length) > this.richTextBoxPrintCtrl1.Text.Length)
length = 0;
this.richTextBoxPrintCtrl1.Select(start, length);
}
我现在不知道问题出在哪里。有人能帮我指出正确的方向吗?
谢谢。
- 编辑 -
我已经添加了所有与拼写检查功能一起使用的代码。如果这是不正确的,我很抱歉,但我是编程新手,我仍然不完全理解所有的技术术语,所以我只是尽力帮助你。:o)
--编辑2--
我发现了更多。“全部替换”功能在一定程度上起作用。如果我更改一个单词并按“全部替换”,它会在拼写检查中更改它,但不会在表单上更改它。例如,请参阅以下图像。