2009-11-23 22 views
0

我有一個Windows窗體結構如下:強制的WinForms自動調整發生

Form (AutoResize = true, AutoSizeMode = GrowAndShrink) 
    FlowLayout (AutoResize = true, AutoSizeMode = GrowAndShrink) 
     GroupBox 
     GroupBox 
     GroupBox 
    StatusStrip 

我的期望是,改變GroupBoxes的知名度應該導致窗口捕捉到一個新來回收空的空間,或適應新的控制。但是,這不會自動發生。如果我最小化托盤,然後恢復窗體(即切換Visible,ShowInTaskbar,WindowState = Normal/Minimized),那麼當它重新出現時,它將正確更新。觸發它的另一件事是在頁面底部的StatusStrip中更新內容(顯示標籤,更改進度條等)。我嘗試了各種巫術啓發的Invalidate/Update/OnResize等組合,但我覺得我錯過了一些更基本的東西,希望有人能看到我描述的明顯缺陷。

表單上窗口小部件的所有更新都在InvokeRequired/Invoke中,如果相關的話。

回答

4

我不能用簡單的測試表單來重現這個問題,它使用了你的佈局和屬性設置。表單的客戶區域在啓動時收縮並根據需要增長,以便在將其可見性屬性設置爲true時使組框可見。

您可以使用PerformLayout()方法要求顯式佈局重新計算。

+0

PerformLayout()有訣竅!謝謝。 :) – Thom 2009-11-24 14:06:41