顶级窗体将最小和最大大小缩放为 DPI
Windows 窗体中的顶级窗体现可在 HighDpiMode.PerMonitorV2 模式下运行时,根据监视器的每英寸点数 (DPI) 缩放其 MinimumSize 和 MaximumSize 值。
引入的版本
.NET 8 预览版 1
旧行为
在 .NET 8 中,无论应用程序 DPI 模式和呈现窗体的监视器的 DPI 如何,顶级窗体的 MinimumSize 和 MaximumSize 值都保持不变。 这有时会导致顶级窗体的缩放限制。
你还可以在 .NET 7 中选择加入此行为。 若要选择加入,请设置“建议操作”部分中所述的 System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi
运行时配置选项。
新行为
从 .NET 8 开始,顶级窗体在 HighDpiMode.PerMonitorV2 模式下运行时,会根据监视器的 DPI 缩放其 MinimumSize 和 MaximumSize 值。 应用的行为可能会通过以下方式更改:
- 当窗体的最小和最大大小更改时,运行时依赖项可能会受到影响。
- 可能会引发新的 MinimumSizeChanged 和 MaximumSizeChanged 事件。
- 缩放的窗体大小现在具有最小和最大大小的新约束值。
更改类别
此更改为行为变更。
更改原因
此更改是改善高 DPI 监视器上 Windows 窗体用户体验的更广泛举措的一部分。 它使开发人员能够设置顶级窗体的最小和最大大小,而无需考虑监视器的 DPI。
建议的操作
如果新行为给你造成问题,可以通过在 runtimeconfig.json 文件中将 System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi
设置为 false
来选择退出。
runtimeconfig.template.json 模板文件:
{
"configProperties": {
"System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi": false
}
}
[appname].runtimeconfig.json 输出文件:
{
"runtimeOptions": {
"configProperties": {
"System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi": false
}
}
}
受影响的 API
不可用