2013-04-11 33 views
0

我試圖在C#/。NET 4.0/WinForms中建立一個用戶控件,它將包含兩個(或多個)GroupBox元素放置在彼此之上,第一個觸摸我的用戶控件的上邊框,而最後一個觸摸底線。如何製作兩個相同高度的GroupBox?

我也想要這些GroupBox元素的高度都是一樣的,除此之外(現在這似乎是困難的部分),所有這些都必須完美地工作,當用戶改變高度應用窗口。到目前爲止,我還沒有找到Anchor屬性的任何組合,因此我開始認爲編寫自定義大小調整處理程序將是唯一的選擇,但在我深入研究這種(在我眼中)髒解決方案,我想知道是否有一些簡單的方法來創建適合我的描述的用戶控件?

Here是什麼,我想完成一個例證,here是會發生什麼,如果頂部GroupBoxTopLeftAnchor和底部的一個具有TopBottomLeft和應用程序窗口被輕微調整(下一個需要所有的額外空間而不是兩個GroupBox均分享它),最後,here是如果我使用前一個示例的屬性,但將BottomAnchor添加到上面的GroupBox會發生什麼情況。

在此先感謝!

回答

2

您可以讓您的容器執行一些工作,即使用TableLayoutPanel作爲容器將其設置爲2行和1列並將Dock屬性設置爲填充,然後您可以將GroupBoxes添加到每個單元格TableLayoutPanel也將Dock模式設置爲Fill,您可能會在Groupbox中設置任何子控件的位置,因爲如果設置了相應的錨點,它將影響控件的大小。玩弄它,看看它是否適合你。

+1

+1因爲對於複雜的佈局,TableLayoutPanel是一個更好的方法,只需要更多的工作來設置! – FastGeek

+0

太棒了!你剛剛救了我一天,我不知道「TableLayoutPanel」的存在。非常感謝你! – Cellane

2

將代碼添加到SizeChanged事件處理程序中以確保佈局元素的顯示完全不是一個骯髒的解決方案 - 這是每個WinFroms UI開發人員必須在某個時候執行的操作!

解決方案很簡單,根據調整大小模型和其他周圍的UI控件設置錨點,然後只需獲取控件的高度屬性,將其除以2,刪除一個數字以計算邊距,然後分配結果數字轉換爲每個GroupBox的高度屬性。

+0

這不是?哦!我不知何故覺得這是我不應該觸及的東西,讓它背後的魔法來處理它。歡呼的答案呢! :-) – Cellane

相關問題