Изменить цвет шрифта, как пользователь вводит в RichTextBox - PullRequest
2 голосов
/ 18 июля 2011

Я хочу создать простой текстовый редактор, но поддерживает многоцветный шрифт, такой как «Компилятор»

Предположим, что мои ключевые слова программы: "собака", "корова", "кошка", "птица"

У меня есть RichTextBox, который реализует событие TextChanged.

Теперь, моя проблема в том, что я не знаю, как изменить цвет шрифта при обнаружении ключевого слова.

Пример строки: A Big Dog and a Cat

Собака будет цвета КРАСНЫЙ, а кошка - цвета ЗЕЛЕНЫЙ.

1 Ответ

0 голосов
/ 18 июля 2011

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

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);
}
...