2015-02-17 3 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

ответ

1

Это дизайн. Свойством BackColor является свойство ambient по умолчанию, что означает, что оно наследует его значение от его родительского элемента управления. Когда вы устанавливаете его явно для определенного значения, это переопределяет природу окружающего мира и заставляет его использовать это конкретное значение.

явно установить цвет кнопки как этот

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