0

我正在尝试在 C#/.NET 4.0/WinForms 中构建一个用户控件,该控件将包含两个(或更多)GroupBox元素放在彼此之上,第一个元素触摸我的用户控件的顶部边框,而最后一个元素触摸底线。

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

是我想要完成的说明,如果top GroupBoxhasTopLeft Anchorbottom one has会发生什么TopBottom并且Left应用程序窗口会稍微调整大小(底部一个占用所有额外空间,而不是两个 GroupBox 平均共享它),最后,如果我使用上一个示例中的属性但将 a 添加到上部会发生这种情况。Bottom AnchorGroupBox

提前致谢!

4

2 回答 2

2

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

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

于 2013-04-11T21:22:59.570 回答
2

您可以让您的容器做一些工作,即使用 aTableLayoutPanel作为容器,将其设置为 2 行和 1 列并将 Dock 属性设置为 Fill,然后您可以将您的 Dock 模式设置GroupBoxes为的每个单元格添加到TableLayoutPanel填充同样,您可能会在 Groupbox 中设置任何子控件的位置,因为如果您设置并列锚点,它将影响控件的大小。玩弄它,看看它是否适合你。

于 2013-04-11T21:30:36.643 回答