Я сталкиваюсь со странной проблемой (WinXP / .NET 2.0). Я использую WinForm UserControl, который переопределяет Refresh ():
public override void Refresh()
{
DoSomeStuff();
base.Refresh();
}
Я добавляю этот UserControl как дочерний элемент в другой элемент управления и хочу обновить все дочерние элементы управления:
ParentControl : UserControl
{
[...]
public ParentControl (...)
{
[...]
UserControl ChildControl = ModelEngine.MainControl; // UserControl as mentioned above
this.Controls.Add(ChildControl);
[...]
ModelEngine.MainControl.Refresh(); //#1
this.Refresh(); // #2
}
}
Вызов метода Refresh () напрямую (# 1) работает нормально.
Я ожидал, что смогу вызвать Refresh () для родительского класса (# 2), и это вызовет рекурсивный Refresh () для всех дочерних элементов управления (как описано в MSDN http://msdn.microsoft.com/en-us/library/system.windows.forms.control.refresh.aspx).. Однако переопределенная функция Refresh () в дочерний контроль не выполняется.
Кстати: установка ControlStyles.UserPaint в значение true не изменила поведение.
Конечно, я мог бы вызвать Refresh () напрямую (как в # 1) или написать свой рекурсивный Refresh (). Но мне интересно, является ли эта ошибка указанием на большую проблему где-то в моем коде ...
Так есть ли очевидная ошибка в моем коде или это обычное поведение .NET?