【问题标题】:How to make two GroupBoxes of the same height?如何制作两个相同高度的GroupBox?
【发布时间】:2013-04-04 05:57:58
【问题描述】:

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

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

Here 是我想要完成的说明,here 是如果顶部 GroupBoxTopLeft Anchor 并且底部有 TopBottomLeft 并且应用程序窗口会稍微调整大小(底部一个占用所有额外空间,而不是两个 GroupBox 均等共享它),最后,here 是如果我使用前面示例中的属性但添加 Bottom @ 会发生什么987654335@转上GroupBox

提前致谢!

【问题讨论】:

    标签: .net winforms resize height groupbox


    【解决方案1】:

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

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

    【讨论】:

    • 不是吗?哦!我不知何故觉得这是我不应该触摸的东西,让背后的魔法来处理它。那就为答案干杯! :-)
    【解决方案2】:

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

    【讨论】:

    • +1 因为对于复杂的布局,TableLayoutPanel 是更好的选择,只是需要做更多的设置工作!
    • 太棒了!你救了我的命,我不知道TableLayoutPanel的存在。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多