RichTextBox часто ошибочно принимают за редактор. Это технически возможно, вам понадобится много кода. Первым делом стоит выбрать шрифт с фиксированным шагом, например, Courier.
Основная проблема заключается в том, что вы не можете использовать функцию выбора, она всегда охватывает линии. Вам придется подделать это, возможно, используя свойство SelectionBackColor. Реализуйте события MouseDown и MouseMove, проверьте свойство Control.Modifiers, чтобы увидеть, не нажата ли клавиша ALT. Используйте GetCharIndexFromPosition, чтобы увидеть, что выбирается. В событии перемещения выполните цикл по столбцам и строкам, которые были де / выделены, используя свойства SelectionStart, SelectionLength и SelectionBackColor для раскрашивания символов.
Это будет мерцать как дешевый мотель. P / Invoke SendMessage () для отправки сообщения WM_SETREDRAW до и после, чтобы избежать этого.
Делать что-то с выбором сложно. Вам нужно будет подкласс RTB, чтобы вы могли переопределить WndProc () и обнаружить сообщения WM_COPY, WM_CUT, WM_PASTE. Другими случайными проблемами являются автоматическая прокрутка, когда мышь приближается к верхней или нижней части элемента управления, и отмена выбора при выполнении другого выбора.
Или вы можете использовать настоящий редактор, такой как ScintillaNET. В общем и целом, этот ответ вряд ли вызовет столько же голосов, сколько и вопрос.