一个用于 WinForms 窗体与控件自适应缩放 的轻量类库,适合在窗口尺寸变化时保持控件位置和大小的整体比例。
English summary: a lightweight WinForms auto-resize helper for scaling controls when the form size changes.
这个库主要解决的是传统 WinForms 项目里很常见的问题:
- 窗体放大后控件布局失衡
- 嵌套控件缩放不一致
- DataGridView 在缩放后列宽体验变差
它保留了非常直接的 API,用最小接入成本解决窗体缩放问题。
.NET Framework 4.5
NuGet: https://www.nuget.org/packages/Simplerjiang.WinFormAutoSize/
根据源码,AutoSizeFormClass 具备以下能力:
- 记录窗体及其控件的初始位置与尺寸
- 递归处理嵌套控件缩放
- 在窗口大小变化时按比例调整控件位置与尺寸
- 针对
DataGridView自动调整列宽模式
using Simplerjiang.WinFormAutoSize;
private readonly AutoSizeFormClass _autoSizer = new AutoSizeFormClass();
private void Form1_Load(object sender, EventArgs e)
{
_autoSizer.controllInitializeSize(this);
}
private void Form1_SizeChanged(object sender, EventArgs e)
{
_autoSizer.controlAutoSize(this);
}- 安装 NuGet 包
Simplerjiang.WinFormAutoSize - 在窗体加载时记录初始布局
- 在
SizeChanged事件中执行自动缩放
- 传统 WinForms 业务系统
- 历史桌面项目维护
- 需要快速补齐自适应能力的内部工具
- 不想大改界面但希望改善缩放体验的项目
当前类名和方法名沿用了项目早期版本的命名方式,以保证已有项目接入时的兼容性:
AutoSizeFormClasscontrollInitializeSize(...)controlAutoSize(...)
原始仓库:https://github.com/simplerjiang/AutoSizeFormClass
核心实现文件:Simplerjiang.WinFormAutoSize/AutoSizeFormClass.cs