2015-02-06 33 views
-4

我正在設計一個控件(以下)ViewPanel。基本上它只是一個面板,它將Text屬性作爲標題。爲此,我調整DisplayRectangle屬性以在頂部留出足夠的空間來繪製一些文本。Winforms所有者繪製的控件和調整大小

我正在經歷的問題(並且經歷了很多所有者繪製的控件操縱DisplayRectangle)的原因是,當控件調整大小時,它的子控件似乎落後了一點。

例子:

Example control

正如你所看到的,我有一個ViewPanel控制,這引起了一個藍色的標題欄,也注意到ViewPanel是填充16px的在每一個方向!

ViewPanel控件有一個孩子(ListView

我已經調整了控制 - 請注意如何ViewPanel已經引起它的標題欄正確的,但孩子卻沒有相應重新定位自身。

問:

什麼是負責更新子控件的位置?我是否需要重寫某些內容?

+0

你有沒有嘗試設置的ListView爲'頂部,左,右,Bottom'的Anchor屬性? – 2015-02-06 12:42:21

+0

我會建議設置邊距而不是使用DisplayRectangle。設置邊距將自動調整其子控件。 。 .. – 2015-02-06 12:43:50

+0

@BastiM ListView設置爲dock.fill – series0ne 2015-02-06 13:44:39

回答

-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(); 
    } 
} 
相關問題