当我有一个父控件的 BackColor
不是 SystemColors.Control
时,但我在该父控件上有按钮,我想在系统中绘制它们。但是,当我不更改按钮的 BackColor
时,它会以父项的颜色绘制。当我将按钮的 BackColor
更改为 SystemColors.Control
时,它不再在 Windows 主题中绘制。
左侧版本带有 SystemColors.Control
,右侧版本没有更改 BackColor
。
炸了,是这个样子的。在这里您可以看到按钮具有纯色背景。
有什么建议可以解决这个问题吗?
图像中的效果可以通过新建一个.NET 2.0 WinForms项目,将Form1
的构造函数改成如下:
public Form1()
{
InitializeComponent();
var textBox = new TextBox();
Controls.Add(textBox);
var button = new Button { Text = "L", Width = 23, Height = 18, Left = -1, Top = -1 };
textBox.Controls.Add(button);
// Disable the line below to get the default behavior
button.BackColor = SystemColors.Control;
}
最佳答案
我目前只能访问 Windows 7,所以我无法在 XP 等上进行测试,但是您是否在 WinForms 应用程序的 Application.EnableVisualStyles
入口点调用 Main
?
在启用 Aero 的 Windows 7 上,如果调用 Application.EnableVisualStyles
,按钮不会采用父颜色。
注意: 您应该设置 button.UseVisualStyleBackColor = true;
并且不要显式设置按钮的 BackColor
属性。
关于c# - 防止 Button 继承父级的 BackColor,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4489663/