.net 如何制作两个高度相同的分组框?

.net 如何制作两个高度相同的分组框?,.net,winforms,resize,height,groupbox,.net,Winforms,Resize,Height,Groupbox,我正试图在C#/.NET 4.0/WinForms中构建一个用户控件,该控件将包含两个(或更多)相互上方放置的GroupBox元素,第一个元素接触到我的用户控件的上边框,而最后一个元素接触到底线 我还希望这些GroupBox元素的高度都是一样的,除此之外(现在这似乎是困难的部分),当用户更改应用程序窗口的高度时,所有这些元素都必须完美地工作。到目前为止,我还没有找到任何能够实现这一点的Anchor属性组合,因此我开始认为编写自定义调整大小处理程序是唯一的选择,但在我深入研究这种(在我看来)肮脏的

我正试图在C#/.NET 4.0/WinForms中构建一个用户控件,该控件将包含两个(或更多)相互上方放置的
GroupBox
元素,第一个元素接触到我的用户控件的上边框,而最后一个元素接触到底线

我还希望这些
GroupBox
元素的高度都是一样的,除此之外(现在这似乎是困难的部分),当用户更改应用程序窗口的高度时,所有这些元素都必须完美地工作。到目前为止,我还没有找到任何能够实现这一点的
Anchor
属性组合,因此我开始认为编写自定义调整大小处理程序是唯一的选择,但在我深入研究这种(在我看来)肮脏的解决方案之前,我想知道是否有一些简单的方法来创建符合我描述的用户控件

这是我想要完成的一个例子,如果top
GroupBox
具有
top
Left
锚定,而底部一个具有
top
bottom
Left
并且应用程序窗口的大小略有调整,会发生什么(底部的一个会占用所有额外的空间,而不是两个分组框平均共享空间)最后,如果我使用上一个示例中的属性,但在上部的分组框中添加一个
底部
锚定
,会发生什么情况


提前感谢!

将代码添加到SizeChanged事件处理程序中以确保布局元素按应有的方式显示,这根本不是一个肮脏的解决方案-这是每个WinFroms UI开发人员在某个时候都必须做的事情


解决方案很简单,根据调整大小的模型和其他周围的UI控件设置定位点,然后简单地获取控件的Height属性,将其除以2,删除一个数字以说明边距,然后将结果数字分配给每个GroupBox的Height属性。

这根本不是一个肮脏的解决方案将代码添加到SizeChanged事件处理程序中,以确保布局元素按应有的方式显示-这是每个WinFroms UI开发人员在某个时候都必须做的事情


解决方案很简单,根据调整大小的模型和其他周围的UI控件设置定位点,然后简单地获取控件的Height属性,将其除以2,删除一个数字以说明边距,然后将结果数字分配给每个GroupBox的Height属性。

您可以让容器执行以下操作:这项工作,即使用
TableLayoutPanel
作为容器将其设置为2行1列,并设置要填充的Dock属性,然后您可以将您的
GroupBox
添加到
TableLayoutPanel
的每个单元格中,并将其Dock模式设置为填充。此外,您可能已经设置了组中任何子控件的位置pbox,因为如果您设置了apposing锚点,它将影响控件的大小。请尝试使用它,看看它是否适合您。

您可以让容器完成部分工作,即使用
TableLayoutPanel
当容器将其设置为2行1列并将Dock属性设置为Fill时,您可以添加
GroupBox
对于
TableLayoutPanel
中的每个单元格,您可能已经在Groupbox中设置了任何子控件的位置,因为如果您设置了相应的锚定,它将影响控件的大小。请尝试一下,看看它是否对您有效。

不是吗?哦!我不知怎的觉得这有些问题我不应该碰的东西,让背后的魔法来处理它。那么为答案欢呼吧!:-)不是吗?哦我不知怎的觉得这是我不应该碰的东西,让背后的魔法来处理它。为答案干杯!:-)+1因为对于复杂的布局,TableLayoutPanel是一种更好的方式,只需进行更多的设置工作!明亮的你刚刚救了我一天,我不知道
TableLayoutPanel
的存在。多谢各位+1因为对于复杂的布局,TableLayoutPanel是一种更好的方式,只需进行更多的设置工作!明亮的你刚刚救了我一天,我不知道
TableLayoutPanel
的存在。非常感谢你!