Можно ли редактировать отдельные слова в richtextbox? - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь создать текстовый редактор, который форматирует текст в соответствии с заданными правилами. Например, определенные (предварительно определенные) слова должны быть подчеркнуты или окрашены в красный цвет и т. Д., Поэтому при каждом нажатии на пробел программа проверяет, подходит ли слово для форматирования, и форматирует по мере необходимости. Проблема в том, что я не могу понять, как редактировать текст по словам.

Я создал событие, которое следит за местом для нажатия:

private void MainTextBox_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Space)
        wordAnalyser.AnalyseWord();
}

(wordAnalyser является экземпляром класса WordAnalyser)

В WordAnalyser я получаю слово (код, набранный из другого SO вопроса , спасибо @King King):

string word = null;
string fullText = new TextRange(MainTextBox.Document.ContentStart, MainTextBox.Document.ContentEnd).Text;
int startIndexOfWord = fullText.TrimEnd().LastIndexOf(' ');
if (startIndexOfWord != -1)
{
    word = fullText.Substring(startIndexOfWord + 1).TrimEnd();
}

И теперь единственное решение, которое приходит мне в голову, - это получить весь текстовый блок, снять последнее слово, отформатировать его, вставить обратно и вставить все это обратно в текстовое поле, но это такой грязный способ сделать это.

Мне интересно, есть ли способ отформатировать слово прямо в поле richtextbox, не касаясь остальной части текста. Я новичок в WPF, поэтому не очень знаком с его возможностями, но я осмотрелся и, похоже, никто не задавался этим вопросом.

Есть идеи?

...