阻止Button继承Parent的BackColor

时间:2010-12-20 12:36:17

标签: c# .net winforms

当我的父控件有BackColor而不是SystemColors.Control时,我在该父控件上有按钮,我想在系统中绘制它们。但是,当我不更改按钮的BackColor时,它会以父项的颜色绘制。当我将按钮的BackColor更改为SystemColors.Control时,它不会再在Windows主题中绘制。

alt text
左侧版本为SystemColors.Control,右侧版本未更改BackColor

alt text
炸了,看起来像这样。在这里,您可以看到按钮具有坚实的背景。

我有什么建议可以解决这个问题吗?

可以通过创建新的.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;
}

1 个答案:

答案 0 :(得分:4)

我目前只能访问Windows 7,因此无法在XP等上进行测试,但是您是否在WinForms应用程序的Application.EnableVisualStyles入口点调用了Main

在启用了Aero的Windows 7上,如果调用Application.EnableVisualStyles,则按钮不会采用父颜色。

NB:您应该设置button.UseVisualStyleBackColor = true;并且不要显式设置按钮的BackColor属性。