是否可以在富文本框中编辑单个单词?

时间:2019-10-24 21:46:04

标签: c# wpf formatting richtextbox

我正在尝试创建一个文本编辑器,该文本编辑器根据输入的设置规则设置文本格式。例如,特定(预定义)的单词需要加下划线或涂成红色等,因此,每次按下空格时,程序都会检查该单词是否符合格式要求,并根据需要进行格式化。问题是我不知道如何逐个单词地编辑文本。

我创建了一个监视要按下的空间的事件:

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

(wordAnalyser是WordAnalyser类的实例)

在WordAnalyser中,我得到了这个词(感谢另一个SO question的昵称,感谢@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的新手,所以对它的功能不太熟悉,但是我环顾四周,似乎没有人遇到这个问题。

有什么想法吗?

0 个答案:

没有答案