【问题标题】:Resizing user control that is docked in Panel control does not resize Panel control - better solution?调整停靠在面板控件中的用户控件的大小不会调整面板控件的大小 - 更好的解决方案?
【发布时间】:2015-09-14 04:47:53
【问题描述】:

我有一个用户控件,它有两个大小选项(用户控件中有一个按钮,用于在两个选项之间切换) - 类似于部分 - 折叠/展开。

此用户控件放置在 Panel 控件上并停靠以填充它。

我需要根据用户控件的大小调整此面板的大小。我预计它会自动发生,因为用户控件已停靠以填充面板,但没有触发面板的 SizeChanged 事件。

所以我的解决方案是以容器形式为用户控件和事件处理程序设置一个事件SizeChanged,从而相应地调整面板的大小。

但这不应该自动工作吗(如上所述)?如果不是,那为什么更改用户控件的大小不会触发容器控件的SizeChanged 事件?

【问题讨论】:

    标签: c# winforms user-controls


    【解决方案1】:

    好吧,您不需要 Dock,因为它会强制控件的大小与面板大小相匹配。反过来,您需要将面板的 AutoSize 属性设置为 True,将 AutoSizeMode 设置为 GrowAndShrink。并使用 Padding 或控件的 Margin 进行调整,使面板更大一些。

    请记住,不断变化的面板尺寸往往会给您带来更多窗口其余部分的布局问题,可能需要移开一些东西以提供空间。 FlowLayoutPanel 往往是下一个选择。或者自动布局无法解决时面板的 SizeChanged 事件。

    【讨论】:

    • 谢谢!至于面板大小的变化 - 我将它放在具有自动调整行高的 TableLayoutPanel Row 中,所以它似乎工作正常
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    • 2020-11-22
    • 1970-01-01
    • 2011-04-24
    相关资源
    最近更新 更多