У меня есть C # UserControl, который содержит TextBox.
Когда пользовательский элемент управления отключен, я бы хотел, чтобы TextBox отображался так, как если бы он был отключен + ReadOnly (то есть не серым). Поэтому, когда пользовательский элемент управления перехватывает EnabledChanged, он соответствующим образом устанавливает свойства размещенного TextBox.
Тем не менее, состояние «Включено» UserControl имеет приоритет над всем остальным, и TextBox по-прежнему отображается серым (даже если его внутренний ForeColor правильный).
Поэтому я решил скрыть размещенный TextBox, когда пользовательский элемент управления отключен, и нарисовать его сам. Я могу успешно визуализировать границу TextBox, используя различные функции ControlPaint.DrawXxx.
Однако рисование текста приводит к растянутым выводам по сравнению с собственным рендерингом. То есть текст начинается в том же месте пикселя, но расстояние между символами заметно больше.
Я использую собственный шрифт TextBox для выполнения рендеринга, поэтому я не знаю, что я делаю неправильно. Единственное оправдание, которое я могу сделать, это то, что C # TextBox визуализируется непосредственно Windows (используя ExtTextOut Win32 API), и это приводит к очевидным различиям.
Какие параметры можно использовать для имитации встроенного рендеринга TextBox?