顶级窗体将最小和最大大小缩放为 DPI

Windows 窗体中的顶级窗体现可在 HighDpiMode.PerMonitorV2 模式下运行时,根据监视器的每英寸点数 (DPI) 缩放其 MinimumSizeMaximumSize 值。

引入的版本

.NET 8 预览版 1

旧行为

在 .NET 8 中,无论应用程序 DPI 模式和呈现窗体的监视器的 DPI 如何,顶级窗体的 MinimumSizeMaximumSize 值都保持不变。 这有时会导致顶级窗体的缩放限制。

你还可以在 .NET 7 中选择加入此行为。 若要选择加入,请设置“建议操作”部分中所述的 System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi 运行时配置选项。

新行为

从 .NET 8 开始,顶级窗体在 HighDpiMode.PerMonitorV2 模式下运行时,会根据监视器的 DPI 缩放其 MinimumSizeMaximumSize 值。 应用的行为可能会通过以下方式更改:

  • 当窗体的最小和最大大小更改时,运行时依赖项可能会受到影响。
  • 可能会引发新的 MinimumSizeChangedMaximumSizeChanged 事件。
  • 缩放的窗体大小现在具有最小和最大大小的新约束值。

更改类别

此更改为行为变更

更改原因

此更改是改善高 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

不可用

请参阅