.NET UserControl继承父表单背景

时间:2010-08-01 10:20:45

标签: .net user-controls treeview background

我有一个从TreeView继承的WinForms控件,我希望它根据窗体(也是自定义)背景自动调整背景颜色。如何制作?

2 个答案:

答案 0 :(得分: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 :(得分:1)

如果您使用除TreeView之外的其他控件,则会采用以下建议:

我没有专门针对TreeView控件尝试此操作,但WinForms约定是setting control.BackColor = Color.Transparent causes the parent background to show through