2017-05-29 164 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