2015-02-17 160 views
0

我只想设置面板区域的背景颜色,但它不知何故也会设置其控件的背景颜色,它有什么问题?面板BackColor控件的颜色设置颜色

public Form1() 
    { 
     InitializeComponent(); 
     Panel p = new Panel(); 
     p.Size = this.ClientSize; 
     p.BackColor = Color.Black; // The button will also have black background color 
     Button b = new Button(); 
     b.Size = new Size(this.ClientSize.Width, 50); 
     p.Controls.Add(b); 
     this.Controls.Add(p); 
    } 

see the result here

+2

没有错,这是由设计。一些属性称为['ambient'](https://msdn.microsoft.com/de-de/library/system.windows.forms.ambientproperties%28v=vs.110%29.aspx)属性,并被继承从控件的父项,即从它所在的容器中进行。只需将颜色设置为任何你想要的,然后它就会粘住。字体是另一种颜色。非常方便,当你想到它,对吗? – TaW 2015-02-17 21:56:20

回答

1

这是由设计。 BackColor属性默认为环境属性,这意味着它从其父控件继承其值。当您将其明确设置为特定值时,它会覆盖周围环境并强制它使用该特定值。

明确设置按钮的颜色像这样

p.Controls.Add(b); 
b.BackColor = Color.White; 
this.Controls.Add(p);