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

标签 c# .net winforms layout

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

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

我玩过各种锚定、停靠和自动调整大小,但我并没有完全按照我想要的方式工作。有时,是滚动弄乱了,有时是其他原因。

面板的锚定、停靠和自动调整大小、用户控件、表单的哪种组合最适合实现预期结果?

最佳答案

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

动态面板锚定在控件的顶部和底部。它不自动调整大小,它会在内容更改后手动更改其 MaximumSize 和 PreferredSize。

表单托管表单使用:

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

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

关于c# - 具有静态和动态内容的 WinForms UserControl 的最佳布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/503267/

相关文章:

c# - 无法从用法中推断出开放泛型类型参数

c# - 将类中的值设置为非常量值并使其不可更改

c# - 安装过程中如何创建文件夹?

.net - 使 Infragistics UltraGrid 列具有 "Spring"行为

c# - 在不隐藏/阻塞任务栏的情况下最大化多屏环境中的窗口

c# - MessageBox 在 SaveFileDialog 之后不显示(聚焦)

c# - 配置 NServiceBus 以记录导致消息重试的异常

c# - Resize 和 SizeChanged 事件之间的区别

c# - 处理未使用的 IDisposable 返回值是否重要?

c# - 如何正确退出 C# 应用程序?