当用户在RichTextBox中输入时改变字体颜色

本文关键字:改变 字体 颜色 输入 用户 RichTextBox | 更新日期: 2023-09-27 18:02:44

我想创建一个简单的文本编辑器,但支持多色字体,如"Compiler"

假设我的程序关键字是:"狗","牛","猫","鸟"

我有一个RichTextBox实现TextChanged事件。

现在,我的问题是我不知道如何改变字体的颜色,当遇到一个关键字。

示例字符串:A Big Dog and a Cat

狗的颜色为红色,猫的颜色为绿色。

当用户在RichTextBox中输入时改变字体颜色

我不确定当您有大量文本时,这种方法的效率如何,但就我测试的程度而言,它工作得相当好。

private void CheckKeyword(string word, Color color, int startIndex)
{
    if (this.richTextBox1.Text.Contains(word))
    {
        int index = -1;
        int selectStart = this.richTextBox1.SelectionStart;
        while ((index = this.richTextBox1.Text.IndexOf(word, (index + 1))) != -1)
        {
            this.richTextBox1.Select((index + startIndex), word.Length);
            this.richTextBox1.SelectionColor = color;
            this.richTextBox1.Select(selectStart, 0);
            this.richTextBox1.SelectionColor = Color.Black;
        }
    }
}
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
    this.CheckKeyword("dog", Color.Red, 0);
    this.CheckKeyword("cat", Color.Green, 0);
}