У меня есть элемент управления WinForms, унаследованный от TreeView, и я хочу, чтобы он автоматически регулировал цвет фона в соответствии с фоном формы (также настраиваемого). Как это сделать?.NET UserControl наследует родительский шаблон фона
2
A
ответ
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.
Не работает для TreeView (без поддержки прозрачного обратного цвета) – SharpAffair