Winforms所有者绘制的控件和调整大小

时间:2015-02-06 12:35:29

标签: c# winforms resize gdi+ ownerdrawn

我正在设计一个名为ViewPanel的控件(下面)。基本上它只是一个面板,它将Text属性作为标题绘制。为此,我调整DisplayRectangle属性以在顶部留出足够的空间来绘制一些文本。

我遇到的问题(并且经历过许多操作DisplayRectangle的所有者绘制的控件)是,当控件调整大小时,它的子控件似乎落后了一点。

示例:

Example control

正如你在这里看到的那样,我有一个ViewPanel控件,它绘制了一个蓝色标题栏,同时注意ViewPanel在每个方向都填充了16px!

ViewPanel控件只有一个孩子(ListView

我调整了控件的大小 - 注意ViewPanel如何正确地绘制了标题栏,但孩子没有相应地重新定位。

问题:

负责更新子控件的位置是什么?我需要覆盖一些东西吗?

1 个答案:

答案 0 :(得分:-2)

已解决(对于任何其他所有者绘图控件):

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();
    }
}