2010-08-01 3 views

ответ

2

Получение контроля над его родителем обычно является плохим. Однако существует специальный метод обнаружения изменения родительского BackColor, поэтому все в порядке. BackColor - это свойство ambient, если оно явно не назначено, имеет то же значение, что и BackColor родителя. Поэтому воспользуйтесь преимуществами:

using System; 
using System.Windows.Forms; 

class MyTreeView : TreeView { 
    protected override void OnParentChanged(EventArgs e) { 
     if (this.Parent != null) this.BackColor = this.Parent.BackColor; 
     base.OnParentChanged(e); 
    } 
    protected override void OnParentBackColorChanged(EventArgs e) { 
     this.BackColor = this.Parent.BackColor; 
     base.OnParentBackColorChanged(e); 
    } 
} 
1

Если вы использовали какой-либо другой контроль, кроме от TreeView, следующие советы будут применяться:

Я не пробовал это на контроле TreeView конкретно, но соглашение WinForms, что setting control.BackColor = Color.Transparent causes the parent background to show through.

+0

Не работает для TreeView (без поддержки прозрачного обратного цвета) – SharpAffair