当我的父控件有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;
}
答案 0 :(得分:4)
我目前只能访问Windows 7,因此无法在XP等上进行测试,但是您是否在WinForms应用程序的Application.EnableVisualStyles
入口点调用了Main
?
在启用了Aero的Windows 7上,如果调用Application.EnableVisualStyles
,则按钮不会采用父颜色。
NB:您应该设置button.UseVisualStyleBackColor = true;
并且不要显式设置按钮的BackColor
属性。