我正在尝试在C#/ .NET 4.0 / WinForms中构建一个用户控件,其中包含两个(或更多)GroupBox
元素放在彼此之上,第一个触摸我的用户控件的顶部边框,而最后一个一个触及底线。
我还希望这些GroupBox
元素的高度完全相同,并且最重要的是(现在这似乎是困难的部分),当用户更改时,所有这些都必须完美无缺地工作应用程序窗口的高度。到目前为止,我还没有找到任何可以实现此目的的Anchor
属性的组合,所以我开始认为编写自定义调整大小处理程序是唯一的选择,但在我深入研究之前(在我的眼睛)脏的解决方案,我想知道是否有一些简单的方法来创建适合我描述的用户控件?
Here说明了我想要实现的目标,here如果前GroupBox
有Top
和Left
Anchor
会发生什么?并且底部有一个Top
,Bottom
和Left
,应用程序窗口稍微调整大小(底部一个占用所有额外的空间,而不是两个GroupBox共享它),最后,{{3如果我使用上一个示例中的属性但是将Bottom
Anchor
添加到上部GroupBox
会发生什么。
提前致谢!
答案 0 :(得分:2)
将代码添加到SizeChanged事件处理程序中以确保布局元素按原样显示并不是一个肮脏的解决方案 - 这是每个WinFroms UI开发人员必须在某些时候做的事情!
解决方案很简单,根据调整大小模型和其他周围的UI控件设置锚点,然后只需获取控件的高度属性,除以2,删除图形以考虑边距,然后分配结果图形到每个GroupBox的高度属性。
答案 1 :(得分:2)
您可以让容器完成一些工作,即使用TableLayoutPanel
作为容器将其设置为2行和1列,并将Dock属性设置为Fill,然后可以添加{{1}对于GroupBoxes
设置其Dock模式为Fill的每个单元格,您可能已经设置了Groupbox中任何子控件的位置,因为如果设置了相应的锚点,它将影响控件的大小。玩弄它,看它是否适合你。