Как найти слово под мышью в элементе управления 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);
}
