gpt4 book ai didi

c# - 覆盖某些 .Net Framework 控件的绘图以更改其边框颜色?

转载 作者:太空宇宙 更新时间:2023-11-03 13:14:01 25 4
gpt4 key购买 nike

SCENARIO

我正在使用第 3 方 Windows 视觉主题。

当我看到我的应用程序时,它看起来像这样:

enter image description here

但是当我使用普通的 Aero 主题时,它看起来到处都是可怕的白色边框:

enter image description here

QUESTION

我知道应用中使用的配色方案取决于视觉风格,但是:

我可以继承 TextBoxComboBoxTabControl 来更改绘制的边框颜色以使用更深的颜色吗?怎么办?

UPDATE

我的文本框使用 BorderStyle 属性值 Fixed3D

我的 ComboBoxes 使用 FlatStyle 属性,其值为 Flat,并设置为 DropDownList

最佳答案

您可以捕获 WM_PAINTWM_ERASEBKGND 消息并手动绘制边框:

[DllImport("user32.dll")]
static extern IntPtr GetWindowDC(IntPtr hWnd);

[DllImport("user32.dll")]
static extern int ReleaseDC(IntPtr hwnd, IntPtr hDC);

protected override void WndProc(ref Message m)
{
IntPtr hdc;
if (m.Msg == 0x14) //WM_ERASEBKGND
{
hdc = GetWindowDC(m.HWnd);

if (hdc != IntPtr.Zero)
{
using (Graphics g = Graphics.FromHdc(hdc))
{
g.DrawRectangle(Pens.Red, 0, 0, this.Width-1, this.Height-1);
}
ReleaseDC(m.HWnd, hdc);
}

base.WndProc(ref m);
}

但是当文本框失去焦点时确实会出现问题。

关于c# - 覆盖某些 .Net Framework 控件的绘图以更改其边框颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27230168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com