Winforms нарисованные владельцем управления и изменения размера
Я разрабатываю элемент управления (ниже) под названием ViewPanel
, По сути это просто панель, которая рисует это Text
собственность как заголовок. Для этого я настраиваю DisplayRectangle
свойство, чтобы оставить достаточно места в верхней части, чтобы нарисовать текст.
Проблема, с которой я сталкиваюсь (и с которой сталкивались многие владельцы средств управления, которые манипулируют DisplayRectangle
) заключается в том, что при изменении размера элемента управления его дочерние элементы управления немного отстают.
Пример:
Как вы можете видеть здесь, у меня есть ViewPanel
контроль, который нарисовал синий заголовок, также обратите внимание, что ViewPanel
дополняется 16px в каждом направлении!
ViewPanel
контроль имеет одного ребенка (ListView
)
Я изменил размер элемента управления - обратите внимание, как ViewPanel
правильно нарисовал свой заголовок, но ребенок не изменился.
Вопрос:
Что отвечает за обновление местоположения дочерних элементов управления? Нужно ли что-то переопределить?
1 ответ
Решено (для любого другого элемента управления рисования владельца):
protected override void WndProc(ref Message m)
{
const int WM_WINDOWPOSCHANGED = 0x0047;
base.WndProc(ref m);
if (m.Msg == WM_WINDOWPOSCHANGED)
{
//Make changes to your display rectangle here...
this.PerformLayout();
}
}