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

Источник: http://csharphelper.com/blog/2016/11/find-the-word-under-the-mouse-in-a-richtextbox-control-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector