Formulare der obersten Ebene skalieren die minimale und maximale Größe auf DPI
Formulare der obersten Ebene in Windows Forms jetzt ihre MinimumSize Werte und MaximumSize entsprechend den Dpi-Werten (Dots per Inch) des Monitors skalieren, wenn sie im HighDpiMode.PerMonitorV2 Modus ausgeführt werden.
Eingeführt in Version
.NET 8 Preview 1
Vorheriges Verhalten
In .NET 8 blieben die MinimumSize Werte und MaximumSize für Formulare der obersten Ebene unabhängig vom DPI-Modus der Anwendung und dem DPI-Wert des Monitors, auf dem das Formular gerendert wird, konstant. Dies führte manchmal zu Skalierungseinschränkungen des Formulars der obersten Ebene.
Sie können dieses Verhalten auch in .NET 7 festlegen. Legen Sie zum Anmelden die System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi
im Abschnitt Empfohlene Aktion beschriebene Laufzeitkonfigurationsoption fest.
Neues Verhalten
Ab .NET 8 skalieren Formulare der obersten Ebene ihre MinimumSize Werte und MaximumSize entsprechend dem DPI-Wert des Monitors, wenn sie im HighDpiMode.PerMonitorV2 Modus ausgeführt werden. Das Verhalten Ihrer App kann sich auf folgende Weise ändern:
- Laufzeitabhängigkeiten können beeinträchtigt werden, wenn sich die minimale und maximale Größe des Formulars ändert.
- Möglicherweise werden neue MinimumSizeChanged Ereignisse und MaximumSizeChanged ausgelöst.
- Die skalierte Formulargröße verfügt jetzt über neue Einschränkungswerte für die minimale und maximale Größe.
Ändern der Kategorie
Diese Änderung ist eine Verhaltensänderung.
Grund für die Änderung
Diese Änderung ist Teil eines umfassenderen Bemühens, die Windows Forms Benutzerfreundlichkeit auf Monitoren mit hohem DPI-Wert zu verbessern. Es ermöglicht Entwicklern, minimale und maximale Größen für Formulare der obersten Ebene festzulegen, ohne den DPI-Wert des Monitors berücksichtigen zu müssen.
Empfohlene Maßnahme
Wenn das neue Verhalten für Sie problematisch ist, können Sie dies deaktivieren, indem Sie in Ihrer System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi
Runtimeconfig.json-Dateifalse
auf festlegen.
runtimeconfig.template.json Vorlagedatei:
{
"configProperties": {
"System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi": false
}
}
[appname].runtimeconfig.json Ausgabedatei:
{
"runtimeOptions": {
"configProperties": {
"System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi": false
}
}
}
Betroffene APIs
Nicht zutreffend