2017-02-21 64 views
-1

我有一張表格,如下圖所示。該表單只包含一個SplitContainer,每個面板中包含兩個TreeView,另外還包含TreeView上方的標籤。防止Windows窗體元素在從底部調整大小時離開視圖?

這裏是形式的照片還沒有被調整:

每個TreeView控件錨定到頂部和左側,並停靠到了谷底。 每個標籤都固定在頂部和左側。 SplitContainer錨定在底部,左側和右側。

上述設置允許我在調整窗體大小時同樣調整TreeView的大小。然而,當我調整窗體的高度,標籤(當然還有的TreeView爲好)被推表單視圖,如圖這樣的畫面:

如何防止被推元素過去的標題欄?最好不使用SizeChanged事件。我曾嘗試向表單中添加填充,以及嘗試不同的對接/錨定模式,但我一直無法對此進行限制。

+1

你的SplitContainer也必須固定在頂部。 – LarsTech

+0

@LarsTech這可以防止標籤在表單上移動,而不是TreeView。 – DK7195

+0

如果樹視圖位於拆分容器中,則它們必須以碼頭填充。 – LarsTech

回答

1

執行以下步驟依次是:

  1. 無論錨SplitContainer到所有4個方面或停靠填充它。
  2. 將標籤放在面板上。使它們比面板小,以確保它們真正成爲面板的子控件(而不是形式)。將他們的Dock財產設置爲Top
  3. TreeViews放置在面板上。放置並停放標籤後,完成這一點非常重要!同樣的事情在這裏:使它們比面板小。然後將他們的Dock財產設置爲Fill

注意:您可以停靠或錨定控件,但不能同時停止!如果DockNone不同,Anchor屬性將被忽略。錨定的邊緣與錨定的邊保持恆定的距離。如果邊緣沒有錨定,則該方向上的控件大小將保持不變。如果兩個對應的邊(例如左和右)未被錨定,則控制將在該方向上居中。

參見:Manage WinForm controls using the Anchor and Dock properties

0

Set SplitContainer.Dock = DockStyle.Fill;如果那是唯一出現在窗體上的東西。

+0

這並沒有阻止這個問題。我遇到與標籤相同的問題,無法在標題欄上移動,但不能移動到TreeView。 – DK7195

+0

您的SplitContainer&views ...在SplitContainer的每一面放置一個面板 - 並將這些面板停靠在頂部。根據需要調整高度,並將包含標題的標籤放置在這些面板上。隨着面板「停靠」到頂部,您現在可以將您的樹視圖填充到每個拆裝容器邊。現在與SplitContainer.Dock =填充,這應該工作。如果標籤不在splitContainer中,那麼是的 - 您會遇到問題 - 執行上述操作將簡單地將標題移動到SplitContainer中 - 但更重要的是 - 使用面板,可以使樹視圖正確對接。 – Scott

+0

示例。 https://1drv.ms/u/s!AjKkamHEU-ahibRsmahJEW1BGqvEvA – Scott