阻止ButtoninheritanceParent的BackColor

当我有一个父控件有一个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应用程序的Main入口点调用Application.EnableVisualStyles

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

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