具有静态和动态内容的WinForms UserControl的最佳布局?

时间:2009-02-02 13:51:14

标签: c# .net winforms layout

我有一个用户控件: a)顶部的按钮面板(始终必须可见) b)具有在运行时动态添加和重新调整大小的控件的面板。控件可以很多,因此面板必须可滚动。

此用户控件将以表单形式托管,具有以下要求: a)表单的初始大小将尝试适合动态内容的最大部分。 b)在更改表格大小时,必须相应地调整控件的大小。

我玩过各种锚定,对接和自动调整大小,但我并没有按照我想要的方式工作。有时候,滚动会变得混乱,有时它会变成其他东西。

面板,用户控件,表格的锚定,对接和自动调整的哪种组合应该最有效地实现预期结果?

3 个答案:

答案 0 :(得分:2)

我成功地满足了要求。这是我的解决方案:

动态面板锚定在控件的顶部和底部。它不是AutoSize,它在更改内容后手动更改其MaximumSize和PreferredSize。

表单使用以下方式托管表单:

        cntrl.AutoSize = true;
        cntrl.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
        cntrl.Dock = System.Windows.Forms.DockStyle.Fill;

表单订阅自定义控件的事件,该事件通知preferredHeight,并相应地更改自己的高度。

答案 1 :(得分:1)

我会选择表布局面板。您可以按一列指定两行,顶部按钮的大小完全相同,底部填充其余按钮。然后为该区域中的动态内容放置普通面板或flowlayoutpanel。

答案 2 :(得分:0)

在不知道问题的具体细节的情况下,我发现多个带有固定面板和/或固定滑块的填充式对接拆分容器通常会创建非常方便的调整大小体验。您也可以非常有效地折叠面板。