2010-08-13 197 views
2

有沒有辦法讓SplitContainer只調整panel1的大小?我有一個Vertical SplitContainer,當我移動分隔符時,我希望第一個面板的大小增大/減小,但不是改變第二個面板的大小,我希望表單的大小增大和減小。SplitContainer,只調整面板1

我創建了一些代碼來增加/減少表單的大小,但Panel2也在改變大小,所以整個面板並不總是可見的。

我需要製作自己的容器,還是可以使用SplitContainer?

我有一個窗體「MainWin」,它包含一個面板「MainPanel」MainPanel包含SplitContainer「MainSplitContainer」。 Panel1包含一個TreeView,Panel2包含3個面板,這些面板根據在TreeView中選擇哪個項目而變得可見。我希望這3個面板始終完全可見(我打算限制分離器的擴展,以便表單不能擴展到屏幕之外),這是可能的還是應該創建自己的控件並調整事物的大小MouseDown,MouseUp和MouseMove事件?

回答

-1

我最終創建了自己的控件。

+0

這是無用的答案 - 沒有任何細節,沒有解釋 – Prokurors 2016-12-06 13:13:21

+0

好吧,不完全沒用。它給我提供了我無法得到SplitContainer所需結果的信息。 「使用FixedPanel」是一個錯誤的答案。 – 2017-03-19 15:12:05

6

沒有必要創建自己的形式:SplitContainer中有一個屬性:「固定面板」 選擇的SplitContainer,並在佈局部分看「固定面板」將它設置爲你想留在寬度或高度(固定面板取決於面板佈局)。

編程方式:

sc.FixedPanel = FixedPanel.Panel1; //Or Panel2 

參見:

Splitcontainer, Make a fixed panel

Fixed Panel Height in a SplitContainer

+1

我想我試過這個,但它沒有給我想要的結果。 – Tester101 2010-10-05 14:56:11

+0

哦!我誤解了這個問題:將你的FixedPanel設置爲你不想改變的面板(這改變了面板的大小,同時改變了窗體本身的大小),並將IsSplitterFixed設置爲False(讓你可以選擇更改面板寬度)。如果(<未固定面板>。!= <正確尺寸>)每當SplitterMoved觸發時,可以根據非永久性面板尺寸和固定尺寸調整表單尺寸面板的預期尺寸。最後再次移動分離器,這次(因爲你有if)它不會重新調整大小。 – Crisfole 2010-10-05 15:39:20

+0

雖然自定義容器可能一樣容易! ;) – Crisfole 2010-10-05 15:39:53

0

您不能設置在SplitContainer的面板的高度財產;但您可以捕獲窗體上的Resize事件並設置splitterDistance。 SplitContainer會爲您調整其他面板。這是我下面的工作中的一段代碼,當窗體調整大小時,它成功地強制Panel1保持相同的大小。希望這有助於

私人小組frmApp_Resize(BYVAL發件人爲System.Object的,BYVALË作爲System.EventArgs)把手MyBase.Resize Me.SplitContainer1.SplitterDistance = 140 結束小組

+1

反問的問題:當分割器移動時,表單應調整大小... – 2013-11-08 16:08:19