i am trying to use TextBoxRenderer
to render a "hot" text box:
TextBoxRenderer.DrawTextBox(e.Graphics, rectangle, TextBoxState.Hot);
except that it doesn't work, it doesn't render the text box as hot.
TextBoxState.Selected
doesn't render as selectedTextBoxState.Hot
doesn't render as hotHow do i make TextBoxRenderer.DrawTextBox(..., Hot)
render as Hot
?
How do i make TextBoxRenderer.DrawTextBox(..., Selected)
render as Selected
?
It seems that TextBoxRenderer
uses EP_BACKGROUNDWITHBORDER
, whereas EP_EDITBORDER_NOSCROLL
is typically used by TextBox
controls[1].
if (VisualStyleRenderer.IsSupported)
{
// Use the text control's focus rectangle.
// EP_EDITBORDER_NOSCROLL, EPSN_FOCUSED
VisualStyleElement element = VisualStyleElement.CreateElement("EDIT", 6, 3);
if (VisualStyleRenderer.IsElementDefined(element))
{
VisualStyleRenderer renderer = new VisualStyleRenderer(element);
renderer.DrawBackground(e.Graphics, ClientRectangle);
}
}
(It's tempting to try to get the element from VisualStyleElement
but there's no nested class for EP_EDITBORDER_NOSCROLL
. So numeric constants 6 and 3 it is.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With