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