Ну, я построил текстовое поле с подсветкой синтаксиса, используя метод, который вы описываете.
На самом деле, сначала я тоже хотел все перестроить, но подумал: мне нужно создать функции каретки, кисть выделения, управлять множеством различных событий, таких как выделение мышью или клавиатурой, удаление, копирование / вырезание / вставка и т. Д. и т.д ...
Это очень много работы, и пользователи Windows используются, например, для выбора текста в текстовых полях, поэтому эту сложную реализацию нельзя оставить нереализованной. Мы должны следовать некоторым указаниям Microsoft о том, как должно выглядеть текстовое поле.
На самом деле, я думаю, что создание нового текстового поля с нуля - это не тот путь. Я предлагаю вам продолжить ваш текущий метод. Если у вас разные шрифты в одном и том же текстовом поле, используйте RichTextBox и обрабатывайте изменения шрифта как в текстовом поле, так и в отформатированном тексте.
Кроме того, хорошей идеей для реализации является рисование видимого текста только с форматированным текстом (но только если пользователь может написать несколько сотен строк текста).