I have a C# UserControl that hosts a TextBox.
When the custom control is disabled, I would like the TextBox to be rendered as if it were Disabled + ReadOnly (i.e. not greyed out). Therefore, when the custom control catches the EnabledChanged it sets the hosted TextBox properties accordingly.
However, the Enabled state of the UserControl takes precedence over everything else and the TextBox is still rendered greyed out (even though its internal ForeColor is correct).
Therefore, I decided to hide the hosted TextBox when the custom control is disabled and draw it myself. I can successfully render the TextBox border using the various ControlPaint.DrawXxx functions.
However, drawing the text results in a stretched output, when compared to the native rendering. That is, the text starts at the exact same pixel location, but character spacing is noticeably larger.
I use the TextBox's own Font to perform the rendering so I don't know what I'm doing wrong. The only justification that I can make is that the C# TextBox is rendered directly by Windows (using the ExtTextOut Win32 API) and this results in the evident differences.
What options can I use to mimic the native TextBox rendering ?