2017-05-29 145 views
1

我有一個splitContainer。我想調整splitContaner面板中的窗體大小,以便按照下面的方式移動分隔線。但我的表單不會重新繪製。任何建議,非常感謝!C#splitContainer1調整子控件大小

private void splitContainer1_SplitterMoved(System.Object sender, System.Windows.Forms.SplitterEventArgs e) 
    { 
     // Define what happens when the splitter is no longer moving. 
     Cursor.Current = System.Windows.Forms.Cursors.Default; 
     statictisTableDisplayForm1.ClientSize = new Size(statictisTableDisplayForm1.Width, splitContainer1.SplitterDistance); 
     statictisTableDisplayForm1.Invalidate(); 
     statictisTableDisplayForm1.Refresh(); 
     Refresh(); 
    } 
+0

你在說你想調整控件在分隔容器中的大小,但是你的代碼設置了某種形式的大小。你能詳細描述一下你有什麼控件,這些控件是如何定位的以及在分離器移動後你想要發生什麼 –

+0

哦,對不起!我在splitContainer面板1中的控件是一種形式。我想要向上移動分離器時,表單將調整大小而不是分割器的樹幹 – LN22

+0

爲什麼要放一個表單而不是面板?如何?這裏導致錯誤。 '頂級控件不能添加到這裏'。對於面板或UserControl等你可以設置Dock = Fill,btw .. – TaW

回答

1
  1. 形式應該是代表您的應用程序的窗口的頂層控制。您不應該將表單作爲控件嵌入其他表單中(除非沒有其他選項)。
  2. 通常,您不應該手動調整大小和/或移動控件。有幾種佈局選項允許在容器大小發生變化時自動調整控件大小:Anchor,Dock

因此,更好地營造用戶控件將包含控件,您StatictisTableDisplayForm的邏輯,並與Dock集地方SplitContainer的面板Fill。當您移動分離器時,這將自動調整用戶控件的大小。

注意:如果您也必須自己使用StatictisTableDisplayForm,那麼只需將相同的用戶控件放置到此表單中即可。

+1

謝謝你,兄弟。我需要更多地關注Dock和Anchor – LN22