.NET UserControl наследует родительский фон формы - PullRequest
2 голосов
/ 01 августа 2010

У меня есть элемент управления WinForms, унаследованный от TreeView, и я хочу, чтобы он автоматически настраивал цвет фона в соответствии с формой (также настроенной) фона.Как это сделать?

Ответы [ 2 ]

2 голосов
/ 01 августа 2010

Понимание элемента управления своего родителя обычно плохая идея. Однако есть специальный метод для определения изменения родительского 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 голос
/ 01 августа 2010

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

Я не пробовал это на TreeView управляет конкретно, но соглашение WinForms гласит, что установка control.BackColor = Color.Transparent заставляет родительский фон показывать через .

...