Насколько я знаю, это возможно сделать только при помощи свойства SelectionColor. Т.е. сперва нужно установить Selection на нужный участок текста, а затем задать цвет. Примерно так:
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
var currentSelStart = richTextBox1.SelectionStart;
var currentSelLength = richTextBox1.SelectionLength;
richTextBox1.SelectAll();
richTextBox1.SelectionColor = SystemColors.WindowText;
var matches = Regex.Matches(richTextBox1.Text, @"\bclass\b");
foreach (var match in matches.Cast<Match>())
{
richTextBox1.Select(match.Index, match.Length);
richTextBox1.SelectionColor = Color.Blue;
}
richTextBox1.Select(currentSelStart, currentSelLength);
richTextBox1.SelectionColor = SystemColors.WindowText;
}
Разумеется, заново раскрашивать весь текст при каждом изменении неправильно. Это нужно делать более оптимальным образом. Кроме того, желательно отключить перерисовку на время раскрашивания, иначе возможны нежелательные моргания при большом размере текста. В примере этого нет, но
тут вроде есть решение.