| Skype: | TextControlSupport | |
| Orders: | 877-462-4772 |

| Author: | TX Text Control Support Department |
| Language: | C# |
| Version: | 1.0 |
| Released: | March 26, 2007 |
| Last modified: | January 11, 2008 |
| Requirements: | TX Text Control .NET with Visual Studio 2005 |
| Download code: | tx_chars_sample.zip |

Sometimes, it is necessary to know the word at the current mouse position, in order to display additional information to the end-user.
This sample displays a tool tip with the word's text when the end-user moves the mouse over a word.
The function GetWordFromIndex must be called with the character index and returns the complete word at this position. To avoid a potential flicker that is caused by changing the input position, this sample does not use the Find method to search for the word delimiters like a comma, period or any other punctuation marks.
Instead of the Find method, the function uses the internal .NET String methods IndexOfAny and LastIndexOfAny. These methods return an index of a specific character. The SubString method is used to build the detected word from the complete document's text.
private string GetWordFromIndex(int Index) { string CompleteText = textControl1.Text.Replace("\r\n","\n"); Char[] chars = new Char[] { ',', ';', ':', '!', '?', '.', ' ', (char)9, (char)10 }; int lastChar = CompleteText.IndexOfAny(chars, Index); if(lastChar != -1) CompleteText = CompleteText.Substring(0, lastChar); int firstChar = CompleteText.LastIndexOfAny(chars); return CompleteText.Substring(firstChar + 1); }
The above function is called in TX Text Control's MouseMove event. The GetItem method of the TextChars collection of TX Text Control returns the character index of a specific location. This method is called with the return value of the MouseMove event. The return value of the GetWordFromIndex function is used to display a tool tip above the specific word.
This approach has the advantage that the current input position must not be changed.
private void textControl1_MouseMove(object sender, MouseEventArgs e) { int charIndex = textControl1.TextChars.GetItem(e.Location, true).Number; string currentWord = GetWordFromIndex(charIndex); if (currentWord != "") { toolTip1.ToolTipTitle = currentWord; toolTip1.Show("Index: " + charIndex.ToString(), this, e.X + 20, e.Y - 10); } else toolTip1.Hide(this); }
The sample requires Visual Studio 2005 and at least a trial version of TX Text Control .NET 13.0.