Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive alcune delle nuove funzionalità di Windows Form e miglioramenti in .NET 8.
Quando si esegue la migrazione da .NET Framework a .NET 8, è necessario tenere presenti alcune modifiche di rilievo. Per ulteriori informazioni, vedere Cambiamenti significativi in Windows Forms.
Miglioramenti nell'associazione dei dati
Un nuovo motore di data binding era in anteprima con .NET 7 ed è ora completamente abilitato in .NET 8. Anche se non è esteso quanto il motore di data binding di Windows Form esistente, questo nuovo motore viene modellato dopo WPF, che semplifica l'implementazione dei principi di progettazione MVVM.
Le funzionalità avanzate di data binding semplificano l'utilizzo completo del modello MVVM e l'uso di mapper relazionali a oggetti di ViewModels in Windows Form. In questo modo si riduce la quantità di codice nei file code-behind. Più importante, consente la condivisione del codice tra Windows Form e altri framework GUI .NET come WPF, UWP/WinUI e .NET MAUI. È importante notare che, sebbene i framework GUI menzionati in precedenza utilizzino XAML come tecnologia per l'interfaccia utente, XAML non è previsto per Windows Forms.
L'interfaccia IBindableComponent e la BindableComponent classe guidano il nuovo sistema di associazione. Controlimplementa l'interfaccia e fornisce nuove funzionalità di data binding per Windows Form.
Comandi dei pulsanti
I comandi dei pulsanti erano in anteprima con .NET 7 ed è ora completamente abilitato in .NET 8. Analogamente a WPF, l'istanza di un oggetto che implementa l'interfaccia ICommand può essere assegnata alla proprietà del Command pulsante. Quando si fa clic sul pulsante, viene richiamato il comando .
È possibile specificare un parametro facoltativo quando il comando viene richiamato, specificando un valore per la proprietà del CommandParameter pulsante.
Command
e CommandParameter
sono proprietà impostate tramite la finestra di progettazione attraverso la finestra Proprietà, sotto (DataBindings), come illustrato nell'immagine seguente.
Anche i pulsanti ascoltano l'evento ICommand.CanExecuteChanged, che fa sì che il controllo interroghi il metodo ICommand.CanExecute. Quando il metodo restituisce true
, il controllo è abilitato; il controllo viene disabilitato quando false
viene restituito .
Miglioramenti dpi di Visual Studio
Visual Studio 2022 17.8 introduce le schede del designer non rilevatori DPI. In precedenza, la scheda Designer di Windows in Visual Studio veniva eseguita con il valore DPI di Visual Studio. Ciò causa problemi durante la progettazione di un'app di Windows Forms non consapevole dei DPI. A questo punto è possibile garantire che l'ambiente di progettazione venga eseguito alla stessa scala desiderata per l'app, con o senza riconoscimento DPI. Prima dell'introduzione di questa funzionalità, dovevi eseguire Visual Studio in modalità non compatibile con DPI, il che rendeva Visual Studio stesso sfocato quando il ridimensionamento DPI veniva applicato in Windows. Ora puoi lasciare Visual Studio da solo e lasciare che il designer esegua non consapevole del DPI.
È possibile abilitare la finestra di progettazione dpi-unware per il progetto Windows Form aggiungendo <ForceDesignerDPIUnaware>
al file di progetto e impostando il valore su true
.
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
<ForceDesignerDPIUnaware>true</ForceDesignerDPIUnaware>
<ApplicationHighDpiMode>DpiUnawareGdiScaled</ApplicationHighDpiMode>
</PropertyGroup>
Importante
Visual Studio legge questa impostazione quando il progetto viene caricato e non quando viene modificato. Dopo aver modificato questa impostazione, scarica e ricarica il progetto per fare in modo che venga preso in considerazione da Visual Studio.
Miglioramenti di valori DPI elevati
Il rendering con valori DPI elevati con PerMonitorV2 è stato migliorato:
Ridimensionare correttamente i controlli annidati. Ad esempio, un pulsante che si trova in un pannello, posizionato in una pagina di tabulazione.
Scala le proprietà Form.MaximumSize e Form.MinimumSize in base alle impostazioni DPI del monitor corrente.
A partire da .NET 8, questa funzionalità è abilitata per impostazione predefinita ed è necessario rifiutarla esplicitamente per ripristinare il comportamento precedente.
Per disabilitare la funzionalità, aggiungere
System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi
all'impostazioneconfigProperties
in runtimeconfig.json e impostare il valore su false:{ "runtimeOptions": { "tfm": "net8.0", "frameworks": [ ... ], "configProperties": { "System.Windows.Forms.ScaleTopLevelFormMinMaxSizeForDpi": false, } } }
Miglioramenti vari
Ecco alcune altre modifiche rilevanti:
- Il codice gestito
FolderBrowserDialog
è stato migliorato, correggendo alcune perdite di memoria. - La base di codice per Windows Forms sta abilitando gradualmente il supporto dei valori Null per C#, eliminando eventuali errori di riferimento Null.
- È stata eseguita la migrazione del
System.Drawing
codice sorgente al repository GitHub di Windows Forms. - È possibile accedere alle icone di Windows moderne tramite una nuova API, System.Drawing.SystemIcons.GetStockIcon. L'enumerazione System.Drawing.StockIconId elenca tutte le icone di sistema disponibili.
- Sono ora disponibili più designer in fase di esecuzione. Per altre informazioni, vedere Problema di GitHub n. 4908.
.NET Desktop feedback