2013-06-12 43 views
0

我有mdiparent窗体,它具有包含treeview的左侧菜单和面板。父窗体的剩余空间可以包括多个窗口,具体取决于用户他想打开它多少个窗口。在面板边缘有一个分割器[左边有树视图的分割器],可以增加或减少面板的宽度,从而增加图表的面积。自动调整mdiparent中的多个子窗体,面板和mdi C#

我曾尝试在分离器移动事件处理程序中使用mdilayout,但它不起作用。

first pic http://www.imageurlhost.com/images/x6pf89yp8x4cnm1hb4x_first.png

红色垂直线是增加/减少在左侧面板的宽度的分离器。 最初,右侧没有空间。打开一个新的儿童窗户适合剩下的空间。

2 http://www.imageurlhost.com/images/b1pu4lztl7eel12b1ho_second.png

分离器移动到左边。右侧有一个空格,子窗体不会调整大小并适合该区域。

3 http://www.imageurlhost.com/images/f9ep8rd4fem5aynhc9z_third.png

分配器移动更向左侧和空间上的权利不断增加。 如果我再打开一张图,然后再打开4张旧图和1张新图,总共5张图完全吻合良好,空间将被利用。如果我再次移动分离器,那么右侧的空间将再次被引入。

4 http://www.imageurlhost.com/images/e3fup4nrfb7aj7d13e5_four.png

我怎样才能让所有的孩子形式,正确配合剩余空间,每次分离器动作?

Splitter move/mouseup事件处理程序中的代码。

this.LayoutMdi(MdiLayout.TileHorizontal);  

子窗体[图形视窗]具有

this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; 

父窗体[这是在图象]

this.leftpanel.Dock = System.Windows.Forms.DockStyle.Left; 
    this.leftpanel.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; 
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; 
    this.AutoSize = true; 

如果母体形式被调整大小然后调整事件处理程序也

this.LayoutMdi(MdiLayout.TileHorizontal); 

这似乎运作良好。如果我最大化/自定义父级表单,子表单会相应调整大小。

如果我对splitter eventhandlers使用相同的东西,它不会以相同的方式工作。

谢谢,

+0

我想你移动分离器的速度越快,获得的空间就越多。你的代码有问题,我们看不到它。 –

+0

我编辑了这篇文章!是的,我移动得越快,我得到的空间就越多。如果我慢慢地移动它,我将获得更少的空间。这是一种随机的行为,我相信或者我不理解为什么快和慢将表现不同的逻辑。 –

回答

0

试过类似的东西?

​​
+0

是的,我已经尝试过了,它不起作用!:| –

+0

对不起:/无线索 你是使用SplitContainerControl还是Splitter –

+0

只是一个分离器,我可以使用SplitContainerControl.It可以达到目的。但为此,我将不得不在面板中添加所有的子表单。它会在我的应用程序中导致性能问题。因为,我不知道面板能够处理多少个子窗口。 –