Вы можете изменить шрифт выбранных слов в поле richtextbox. Посмотрите на свойства Select и SelectedFont элемента управления.
Но, по сути, вам нужно перебрать слова, проверить, присутствует ли слово в ваших ключевых словах, а затем изменить шрифт, используя вышеупомянутые свойства.
Не совсем ответ на ваш вопрос, но вы смотрели на компонент текстового редактора из SharpDevelop ? Он довольно легкий (< 200 КБ IIRC), может быть легко встроен в приложения WinForms и имеет встроенную подсветку синтаксиса для нескольких языков.
В противном случае, вы можете посмотреть эту страницу CodeProject . Он форматирует RTF при вводе текста, что не очень эффективно для больших файлов, и он содержит несколько жутких catch (Exception) { }
блоков, поэтому я не уверен, буду ли я использовать его в жизненно важном приложении, но это определенно хорошая отправная точка, чтобы увидеть, как это можно сделать.
Элемент управления Scintilla - отличный редактор исходного кода, который включает подсветку синтаксиса среди целого ряда других функций. Вы можете встроить его в свое собственное приложение, и имеется доступная .NET-оболочка .
В Scintilla вы можете указать ключевые слова, и затем она будет применять подсветку синтаксиса по мере ввода.
Используете ли вы WinForms или WPF?
Если WPF, вы могли бы взглянуть на AvalonEdit . Он бесплатный и с открытым исходным кодом, и он используется в SharpDevelop (IDE с открытым исходным кодом).
Подсветка синтаксиса - непростая задача для эффективного выполнения. Многие решения, которые вы можете найти (например, с модификацией RTF), являются одноразовыми. Если вы хотите выделять и снимать выделение со слов на лету во время редактирования, ваш код должен быть готов к этому. Я бы не стал изобретать велосипед и использовать ICSharp.TextEditor или что-то подобное для решения вашей проблемы.
Многие решения, которые вы можете найти (например, с модификацией RTF), являются одноразовыми. Если вы хотите выделять и снимать выделение слов на лету во время редактирования, ваш код должен быть готов к этому. Я бы не стал изобретать велосипед и использовать ICSharp.TextEditor или что-то подобное для решения вашей проблемы. Многие решения, которые вы можете найти (например, с модификацией RTF), являются одноразовыми. Если вы хотите выделять и снимать выделение со слов на лету во время редактирования, ваш код должен быть готов к этому. Я бы не стал изобретать велосипед и использовать ICSharp.TextEditor или что-то подобное для решения вашей проблемы.