ComponentOne Spell for .NET: C1Spell Task-Based Help > Spell Checking Individual Words as You Type

Spell Checking Individual Words as You Type

The following topics demonstrate the methods, good for general data entry tasks, of spell checking using the C1Spell class.

Showing a red sign

The following steps show how to use a red sign to signal misspelled words as you type. This topic uses the CheckTyping method and calls the TypingError event. Complete the following steps:

1.   To connect the C1Spell component to the textbox control, double-click the form and enter the following code in the Form_Load event handler:

      Visual Basic

Me.C1Spell1.CheckTyping(Me.TextBox1)  

      C#

this.c1Spell1.CheckTyping(this.textBox1);  

2.   To show a red sign for misspelled words call the TypingError event, and to show a green sign for correctly typed words call the TypingOK event. Add the following code:

      Visual Basic

Private Sub C1Spell1_TypingError(ByVal sender As System.Object, ByVal e As C1.Win.C1Spell.TypingErrorEventArgs) Handles C1Spell1.TypingError

    ' show red light to indicate an error was detected

    Panel1.BackColor = Color.Red

End Sub

Private Sub C1Spell1_TypingOK(ByVal sender As System.Object, ByVal e As C1.Win.C1Spell.TypingOKEventArgs) Handles C1Spell1.TypingOK

    ' typed something right? Use green color.

    Panel1.BackColor = Color.Green

End Sub

      C#

private void c1Spell1_TypingError(object sender, C1.Win.C1Spell.TypingErrorEventArgs e)

{

    // show red light to indicate an error was detected

    this.panel1.BackColor = Color.Red;

}

private void c1Spell1_TypingOK(object sender, C1.Win.C1Spell.TypingOKEventArgs e)

{

    // typed something right? Use green color.

    this.panel1.BackColor = Color.Green;

}

This topic illustrates the following:

Here is what each form should look when an incorrect word or correct word is typed, respectfully.

 

Creating a pop-up menu

To provide as-you-type spell checking using the pop-up menu, complete the following steps:

1.   Place a C1Spell component and ContextMenuStrip control on the form.

 

 

2.   From the component tray, select the ContextMenuStrip control to view the control on the form. Place your cursor over "Type Here" and enter the following menu items:

 

 

3.   Note that the default property for TypingErrorAction property is BeepandUnderline. You may choose a different action for the TypingErrorAction property, see the TypingErrorActionEnum enumeration members.

4.   To connect the C1Spell component to the textbox control, double-click the form and enter the following code in the Form_Load event handler:

      Visual Basic

Me.C1Spell1.CheckTyping(Me.TextBox1)

      C#

this.c1Spell1.CheckTyping(this.textBox1);

5.   To call the TypingError event, enter the following code:

      Visual Basic

Private Sub C1Spell1_TypingError(ByVal sender As System.Object, ByVal e As C1.Win.C1Spell.TypingErrorEventArgs) Handles C1Spell1.TypingError

    C1Spell1.TypingErrorAction = C1.Win.C1Spell.TypingErrorActionEnum.Underline

 

    ' use CheckString method to build a list of suggestions

    C1Spell1.CheckString(e.ErrWord, C1.Win.C1Spell.BadWordDialogEnum.NoDialog)

 

    ' if no suggestions, just quit

    If C1Spell1.Suggestions.Count = 0 Then Exit Sub

 

    ' now select the word

    TextBox1.Select(e.SelStart, e.SelLength)

End Sub

      C#

private void c1Spell1_TypingError(object sender, C1.Win.C1Spell.TypingErrorEventArgs e)

{

    this.c1Spell1.TypingErrorAction = C1.Win.C1Spell.TypingErrorActionEnum.Underline;

 

    // use CheckString method to build a list of suggestions

   this.c1Spell1.CheckString(e.ErrWord, C1.Win.C1Spell.BadWordDialogEnum.NoDialog);

 

    // if no suggestions, just quit

    if (this.c1Spell1.Suggestions.Count == 0)

    return;

 

    // now select the word

    textBox1.Select((int)e.SelStart, (int)e.SelLength);

}

6.   To create a context menu that includes more than one spelling suggestion, use the following code:

      Visual Basic

' build the context menu if there are at least two suggestions

' and put the suggestion words as the menu texts

Dim i As Integer

    For i = 1 To 5

    Me.ContextMenuStrip1.Items(i).Visible = False

Next

 

Me.ContextMenuStrip1.Items(0).Text = e.ErrWord & " (not in dictionary)"

    For i = 1 To 5

    If i > 5 Then Exit For

    If C1Spell1.Suggestions.Count < i Then Exit For

 

Me.ContextMenuStrip1.Items(i).Text = C1Spell1.Suggestions(i - 1)

Me.ContextMenuStrip1.Items(i).Visible = True

Next

 

' Show the context menu at the current caret position

' note that the caret position is the screen position and it

' should be transferred to the client position for each textbox

Dim pos As Point

Dim x, y

    x = C1Spell1.CaretPosX

    y = C1Spell1.CaretPosY

    pos = New Point(x, y)

 

    pos = TextBox1.PointToClient(pos)

Me.ContextMenuStrip1.Show(TextBox1, pos)

      C#

// build the context menu if there are at least two suggestions

// and put the suggestion words as the menu texts

for(int i = 1; i <= 5; i++)

this.contextMenuStrip1.Items[i].Visible = false;

 

this.contextMenuStrip1.Items[0].Text = e.ErrWord + " (not in dictionary)";

    for( int i = 1; i <= 5; i++)

    {

        if (this.c1Spell1.Suggestions.Count < i)

          break;

 

        this.contextMenuStrip1.Items[i].Text = this.c1Spell1.Suggestions[i-1];

        this.contextMenuStrip1.Items[i].Visible = true;

    }

 

// Show the context menu at the current caret position

// note that the caret position is the screen position and it

// should be transferred to the client position for each textbox

Point pos = new Point((int)this.c1Spell1.CaretPosX, (int)this.c1Spell1.CaretPosY);

pos = this.textBox1.PointToClient(pos);

this.contextMenuStrip1.Show(this.textBox1, pos);

7.   The following code selects the error word and replaces it with the correctly spelled menu item chosen by the user:

      Visual Basic

' this sub routine will select the error word

Private Sub SetSelection(ByVal start As Integer, ByVal length As Integer)

    TextBox1.Select(start, length)

End Sub

 

Private Sub menuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    ' ignore this word

    Me.C1Spell1.IgnoreAllWord = True

End Sub

 

' this sub routine will change the error word to val

Private Sub ChangeText(ByVal val As String)

    Me.TextBox1.SelectedText = val

End Sub

      C#

private void SetSelection(int start, int length)

{

    textBox1.Select(start, length);

}

private void menuItem_Click(object sender, EventArgs e)

{

    // ignore this word

    this.c1Spell1.IgnoreAllWord = true;

}

// this sub routine will change the error word to val

private void ChangeText(string val)

{

    this.textBox1.SelectedText = val;

}

This topic illustrates the following:

Type a word in the box. If it is misspelled, it will beep and underline. Right-click the word to view the spelling suggestions from the pop-up menu:

 


Send comments about this topic to ComponentOne.
Copyright © 1987-2008 ComponentOne LLC. All rights reserved.