我有一个继承自TreeView的WinForms控件,我希望它能够根据表单(也是自定义的)背景自动调整背景颜色。如何制作?
最佳答案
让控件知道其父控件通常是一个坏主意。然而,有一个专门的方法来检测父背景颜色的变化,所以这是可以的。 BackColor 是一个环境属性,如果未显式分配,则其值与父级的 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);
}
}
关于.NET UserControl继承父窗体背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3381630/