Мне нужен класс, который имитирует элемент управления TextBox, но это не элемент управления, а вместо этого пользовательский нарисованный компонент или элемент.
Создание такого элемента похоже на повторное изобретение колеса, поскольку я вижу его везде,Например, в любом современном веб-браузере текстовые поля не являются элементами управления.Большинство элементов управления Winforms, особенно элементы управления ToolStrip, такие как ToolStripTextBox, имеют элементы, которые ведут себя как текстовые поля (но не являются элементами управления).
Я предполагаю, что Microsoft не изобретает колесо заново для каждого элемента управления, который они создают.Но, скорее всего, их код проприетарный, а не публичный.
Кто-нибудь знает о решении с открытым исходным кодом для этого?Я имею опыт работы с рисованием GDI +, но текстовое поле не является тривиальной задачей, когда вы рассматриваете позиционирование каретки, выделение и вставку текста.
Буду признателен за любые указания о том, как писать код самостоятельно, например:Как рассчитать символ в данной точке.Должен ли я создать таблицу соответствия для измеренной ширины каждого возможного символа?Или выполнить цикл по MeasureString, чтобы учесть пространство форматирования?