如何使用.NET TextBoxRenderer和TextBoxState.Hot来绘制热文本框?

发布于 2024-12-21 01:39:43 字数 693 浏览 0 评论 0原文

我正在尝试使用 TextBoxRenderer 渲染“热”文本框:

TextBoxRenderer.DrawTextBox(e.Graphics, rectangle, TextBoxState.Hot);

除了它不起作用之外,它不会将文本框渲染为热。

  • TextBoxState.Selected 不会呈现为选定的
  • TextBoxState.Hot 不会呈现为热门

在此处输入图像描述

如何使 TextBoxRenderer.DrawTextBox(..., Hot) 渲染为 Hot

相关但不同的问题:

How do i make TextBoxRenderer.DrawTextBox(..., Selected) render as Selected?

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 selected
  • TextBoxState.Hot doesn't render as hot

enter image description here

How do i make TextBoxRenderer.DrawTextBox(..., Hot) render as Hot?

Related but different question:

How do i make TextBoxRenderer.DrawTextBox(..., Selected) render as Selected?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

廻憶裏菂餘溫 2024-12-28 01:39:43

看来 TextBoxRenderer 使用 EP_BACKGROUNDWITHBORDER,而 EP_EDITBORDER_NOSCROLL 通常由 TextBox 控件使用[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);
  }
}

(尝试从 VisualStyleElement 获取元素很诱人,但 EP_EDITBORDER_NOSCROLL 没有嵌套类。所以是数字常量 6 和 3。)

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.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文