2013-06-12 60 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可以達到目的。但爲此,我將不得不在面板中添加所有的子表單。它會在我的應用程序中導致性能問題。因爲,我不知道面板能夠處理多少個子窗口。 –