Novità di Windows Form in .NET 6.0

.NET 6.0 è stato aggiornato con l’ultimo aggiornamento del 14 dicembre 2021. Questo aggiornamento contiene correzioni anche relative alla sicurezza.

La matrice della piattaforma è stata notevolmente ampliata rispetto a .NET 5 ed includerà importanti miglioramenti in tutte le parti di .NET, anche per le app cloud, desktop e mobili.

Accessibility improvements and fixes

 

In questa versione, sono stati apportati ulteriori miglioramenti:

  1. Supporto migliorato per la tecnologia assistita quando si usano le app Windows Forms. I provider UIA consentono a strumenti come Narratore e altri, di interagire con gli elementi di un’applicazione. UIA viene spesso utilizzato anche per creare l’automazione dei test per guidare le app; è stato aggiunto il supporto dei provider UIA per i seguenti controlli:
    • CheckedListBox
    • LinkLabel
    • Panel
    • ScrollBar
    • TabControl
    • TrackBar
  2. Comunicazioni Narrator migliorate in DataGridView, ErrorProvider e ListView.
  3. Suggerimenti da tastiera per i controlli TabControl’s TabPagee TreeView’s TreeNode.
  4. Supporto del modello di controllo ScrollItem per ComboBoxItemAccessibleObject.
  5. Tipi di controllo corretti per un migliore supporto dei modelli di controllo del testo .
  6. Supporto ExpandCollapse Control Pattern per il controllo DateTimePicker.
  7. Supporto del modello di controllo per il componente UpDownButtons in DomainUpDown e nei controlli NumericUpDown.
  8. Contrasto del colore migliorato nei seguenti controlli:

    • CheckedListBox
    • DataGridView
    • Label
    • PropertyGridView
    • ToolStripButton

 

Bootstrap dell’applicazione

In .NET Core 3.0 abbiamo iniziato a modernizzare e ringiovanire Windows Forms. Come parte di questa iniziativa, abbiamo cambiato il carattere predefinito in Segoe UI, 9fe abbiamo imparato rapidamente che un gran numero di cose dipendeva da questa metrica di carattere predefinita. Ad esempio, il designer non era più un vero WYSIWYG, poiché il processo di Visual Studio viene eseguito in .NET Framework 4.7.2 e utilizza il vecchio carattere predefinito (Microsoft Sans Serif, 8.25f) e l’applicazione .NET in fase di esecuzione utilizza il nuovo carattere .

Questa modifica ha anche reso più difficile per alcuni clienti migrare le loro applicazioni di grandi dimensioni con layout pixel-perfect. Sebbene avessimo fornito strategie di migrazione , applicarle a centinaia di moduli e controlli potrebbe essere un’impresa significativa.

Per semplificare la migrazione di quelle app perfette per i pixel, abbiamo introdotto una nuova API (per maggiori dettagli fare riferimento al post sui caratteri predefiniti a livello di applicazione):

 

Tuttavia, questa API non era sufficiente per affrontare la capacità del designer di eseguire il rendering di moduli e controlli con lo stesso nuovo carattere. 

Si prega di dare il benvenuto al nuovo bootstrap dell’applicazione Windows Forms: Program.cs Main()

 

 

ApplicationConfiguration.Initialize() è un’API generata dalla sorgente che dietro le quinte emette le seguenti chiamate:

 

 

I parametri di queste chiamate sono configurabili tramite le proprietà di MSBuild nei file csproj o props.

Anche il designer di Windows Form in Visual Studio 2022 è a conoscenza di queste proprietà e può mostrarti come la tua applicazione (C#, .NET 6.0 e versioni successive) vedrebbe il runtime:

 

 

Si noti che Visual Basic gestisce questi valori predefiniti a livello di applicazione in modo diverso.

In .NET 6.0 Visual Basic introduce un nuovo evento dell’applicazione ApplyApplicationDefaults che consente di definire le impostazioni a livello di applicazione (ad esempio, HighDpiMode o il carattere predefinito) nel tipico modo di Visual Basic.

 

Aggiornamenti del template

Come accennato in precedenza, abbiamo aggiornato i nostri modelli C# in linea con le modifiche correlate ai nuovi workloads di .NET.

I modelli Windows Form per C# sono stati aggiornati per supportare direttive, namespece file-scoped e nullable reference types. Poiché una tipica app Windows Form richiede un attributo ed è costituita da più tipi suddivisi in più file, le istruzioni di primo livello sono notevolmente assenti dai modelli Windows Form. Tuttavia, i modelli aggiornati includono il codice bootstrap dell’applicazione.

 

 

Più designer di runtime

Abbiamo completato il porting dei designer mancanti e dell’infrastruttura relativa ai designer che consentono di creare un designer generico (ad esempio, un designer di report). 

 

DPI elevati e correzioni di ridimensionamento

Abbiamo lavorato sullo spazio DPI elevato con l’obiettivo di far sì che le applicazioni Windows Form supportino correttamente la modalità PerMonitorV2 nativamente.

È un’impresa impegnativa e purtroppo non siamo riusciti a ottenere quanto speravamo. Sempre in questa versione abbiamo fatto dei progressi e ora possiamo:

  • Creare controlli nello stesso riconoscimento DPI dell’applicazione
  • Scalare correttamente ContainerControl e le MDI finestre figlio in modalità PerMonitorV2 nella maggior parte degli scenari. Ci sono ancora pochi scenari specifici (es. ancoraggio) e controlli (es. MonthCalendar) in cui l’esperienza rimane al di sotto della media.