スペル チェックを提供するために、アプリケーションで NetSpell を使用しています。NetSpell の 1 つの機能以外はすべて正常に動作しています。これが「単語の置換」機能です (むしろ、スペル チェッカーでは重要な機能ですよね?)。
コードは次のとおりです。
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--
もう少しわかってきました。「すべて置換」機能はある程度機能します。単語を変更して「すべて置換」を押すと、スペル チェック内では変更されますが、フォーム上では変更されません。たとえば、次の画像を参照してください。