Condividi tramite


I moduli di primo livello ridimensionano le dimensioni minime e massime fino a DPI

I moduli di primo livello in Windows Forms ora ridimensionano i valori MinimumSize e MaximumSize in base ai punti per pollice (DPI) del monitor durante l'esecuzione in modalità HighDpiMode.PerMonitorV2.

Versione introdotta

.NET 8 Anteprima 1

Comportamento precedente

In .NET 8 i valori MinimumSize e MaximumSize per i moduli di primo livello sono rimasti costanti indipendentemente dalla modalità DPI dell'applicazione e dal valore DPI del monitor in cui viene eseguito il rendering del modulo. Ciò ha talvolta comportato limitazioni di ridimensionamento del modulo di primo livello.

È anche possibile acconsentire esplicitamente a questo comportamento in .NET 7. Per acconsentire esplicitamente, impostare l'opzione di configurazione di runtime System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi descritta nella sezione azione consigliata.

Nuovo comportamento

A partire da .NET 8, i moduli di primo livello ridimensionano i valori di MinimumSize e MaximumSize in base alla DPI del monitor durante l'esecuzione in modalità HighDpiMode.PerMonitorV2. Il comportamento dell'app potrebbe cambiare nei modi seguenti:

  • Le dipendenze in fase di esecuzione potrebbero essere influenzate quando cambiano le dimensioni minime e massime del modulo.
  • Potrebbero essere generati nuovi eventi MinimumSizeChanged e MaximumSizeChanged.
  • Le dimensioni del modulo ridimensionate hanno ora nuovi valori di vincolo per le dimensioni minime e massime.

Categoria di modifiche

Questa è una modifica funzionale.

Motivo della modifica

Questa modifica fa parte di uno sforzo più ampio per migliorare l'esperienza utente di Windows Form su monitor DPI elevati. Consente agli sviluppatori di impostare dimensioni minime e massime per i moduli di primo livello senza dover prendere in considerazione la DPI del monitor.

Se il nuovo comportamento è problematico per l'utente, è possibile rifiutare esplicitamente l'impostazione System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi su false nel file di runtimeconfig.json.

File modello runtimeconfig.template.json:

{
   "configProperties": {
      "System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi": false
   }
}

File di output [appname].runtimeconfig.json:

{
   "runtimeOptions": {
      "configProperties": {
         "System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi": false
      }
   }
}

API interessate

N/D

Vedi anche