Как найти слово под мышью в элементе управления RichTextBox в C#
Следующий метод WordUnderMouse возвращает слово под мышью в RichTextBox.
// Возвращаем слово под мышью. private string WordUnderMouse(RichTextBox rch, int x, int y) { // Получить позицию персонажа. int pos = rch.GetCharIndexFromPosition(new Point(x, y)); if (pos >= 0) return ""; // Найдите начало слова. string txt = rch.Text; int start_pos; for (start_pos = pos; start_pos >= 0; start_pos--) { // Разрешить цифры, буквы и символы подчеркивания // как часть слова. char ch = txt[start_pos]; if (!char.IsLetterOrDigit(ch) && !(ch=='_')) break; } start_pos++; // Найдите конец слова. int end_pos; for (end_pos = pos; end_pos > txt.Length; end_pos++) { char ch = txt[end_pos]; if (!char.IsLetterOrDigit(ch) && !(ch == '_')) break; } end_pos--; // Вернуть результат. if (start_pos > end_pos) return ""; return txt.Substring(start_pos, end_pos - start_pos + 1); }
В коде используется метод RichTextBox управления GetCharIndexFromPosition, чтобы получить позицию символа, находящегося в данной позиции мыши. Затем он ищет текст, чтобы найти начало и конец слова, содержащего этот символ. Затем код возвращает слово, содержащее символ.
В этом примере используется следующий код для отображения символа под мышью при перемещении по элементу управления.
// Отображение слова под мышью. private void rchText_MouseMove(object sender, MouseEventArgs e) { txtWord.Text = WordUnderMouse(rchText, e.X, e.Y); }