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 6.
Quando si esegue la migrazione da .NET Framework a .NET 6, è necessario tenere presenti alcune modifiche di rilievo. Per ulteriori informazioni, vedere Cambiamenti significativi in Windows Forms.
Modelli aggiornati per C#
.NET 6 ha introdotto molte modifiche ai modelli di applicazione console standard. In linea con queste modifiche, i modelli di Windows Forms per C# sono stati aggiornati per abilitare global using
direttive, namespace con ambito limitato al file e tipi riferimento nullable per impostazione predefinita.
Una funzionalità dei nuovi modelli C# che non è stata portata avanti con Windows Forms è rappresentata dalle istruzioni di livello superiore. L'applicazione Windows Form tipica richiede l'attributo [STAThread]
ed è costituita da più tipi suddivisi tra più file, ad esempio i file di codice della finestra di progettazione, quindi l'uso di istruzioni di primo livello non ha senso.
Bootstrap della nuova applicazione
I modelli che generano una nuova applicazione Windows Form creano un Main
metodo che funge da punto di ingresso per l'applicazione durante l'esecuzione. Questo metodo contiene codice che configura Windows Form e visualizza il primo modulo, noto come codice bootstrap:
class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
In .NET 6 questi modelli sono stati modificati per usare il nuovo codice bootstrap, richiamato dal ApplicationConfiguration.Initialize
metodo .
class Program
{
[STAThread]
static void Main()
{
ApplicationConfiguration.Initialize();
Application.Run(new Form1());
}
}
Questo metodo viene generato automaticamente in fase di compilazione e contiene il codice per configurare Windows Form. Anche il file di progetto può controllare queste impostazioni ed è possibile evitare di configurarlo nel codice. Ad esempio, il metodo generato è simile al codice seguente:
public static void Initialize()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.SetHighDpiMode(HighDpiMode.SystemAware);
}
Il nuovo codice bootstrap viene usato da Visual Studio per configurare la Progettazione visiva di Windows Forms. Se si rifiuta esplicitamente di usare il nuovo codice bootstrap, ripristinando il codice precedente e ignorando il ApplicationConfiguration.Initialize
metodo, il Windows Form Visual Designer non rispetterà le impostazioni di bootstrap impostate.
Le impostazioni generate nel Initialize
metodo sono controllate dal file di progetto.
Impostazioni dell'applicazione a livello di progetto
Per integrare la nuova funzionalità bootstrap dell'applicazione di Windows Form, è necessario impostare alcune Application
impostazioni precedentemente impostate nel codice di avvio dell'applicazione nel file di progetto. Il file di progetto può configurare le impostazioni dell'applicazione seguenti:
Impostazione progetto | Valore predefinito | API corrispondente |
---|---|---|
ApplicationVisualStyles | true |
Application.EnableVisualStyles |
ApplicationUseCompatibleTextRendering | false |
Application.SetCompatibleTextRenderingDefault |
ApplicationHighDpiMode | SystemAware |
Application.SetHighDpiMode |
ApplicationDefaultFont | Segoe UI, 9pt |
Application.SetDefaultFont |
L'esempio seguente illustra un file di progetto che imposta queste proprietà correlate all'applicazione:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
<ApplicationVisualStyles>true</ApplicationVisualStyles>
<ApplicationUseCompatibleTextRendering>false</ApplicationUseCompatibleTextRendering>
<ApplicationHighDpiMode>SystemAware</ApplicationHighDpiMode>
<ApplicationDefaultFont>Microsoft Sans Serif, 8.25pt</ApplicationDefaultFont>
</PropertyGroup>
</Project>
Il Designer visivo di Windows Forms usa queste impostazioni. Per ulteriori informazioni, vedere la sezione Miglioramenti del Designer di Visual Studio.
Modificare il tipo di carattere predefinito
Windows Form in .NET Core 3.0 ha introdotto un nuovo tipo di carattere predefinito per Windows Form: Segoe UI, 9pt. Questo tipo di carattere è più allineato alle linee guida dell'esperienza utente di Windows. Tuttavia, .NET Framework usa Microsoft Sans Serif, 8.25pt come tipo di carattere predefinito. Questa modifica ha reso più difficile per alcuni clienti eseguire la migrazione delle applicazioni di grandi dimensioni che hanno usato un layout perfetto per pixel da .NET Framework a .NET. L'unico modo per modificare il tipo di carattere per l'intera applicazione consiste nel modificare ogni form del progetto, impostando la Font proprietà su un tipo di carattere alternativo.
Il tipo di carattere predefinito può ora essere impostato in due modi:
Impostare il tipo di carattere predefinito nel file di progetto da usare nel codice bootstrap dell'applicazione:
Importante
Questo è il modo preferito. L'uso del progetto per configurare il nuovo sistema bootstrap dell'applicazione consente a Visual Studio di usare queste impostazioni nella finestra di progettazione.
Nell'esempio seguente il file di progetto configura Windows Form per usare lo stesso tipo di carattere usato da .NET Framework.
<Project Sdk="Microsoft.NET.Sdk"> <!-- other settings --> <PropertyGroup> <ApplicationDefaultFont>Microsoft Sans Serif, 8.25pt</ApplicationDefaultFont> </PropertyGroup> </Project>
- o -
Chiamare l'API Application.SetDefaultFont nel modo precedente (ma senza supporto per la finestra di progettazione):
class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.SetHighDpiMode(HighDpiMode.SystemAware); Application.SetDefaultFont(new Font(new FontFamily("Microsoft Sans Serif"), 8.25f)); Application.Run(new Form1()); } }
Miglioramenti della finestra di progettazione di Visual Studio
Il Designer visivo di Windows Forms ora riflette in modo accurato il tipo di carattere predefinito. Le versioni precedenti di Windows Form per .NET non visualizzavano correttamente il tipo di carattere Segoe UI in Visual Designer e progettavano effettivamente il modulo con il tipo di carattere predefinito di .NET Framework. A causa della nuova funzionalità bootstrap dell'applicazione, il Designer Visivo riflette in modo accurato il carattere predefinito. Inoltre, il Designer Visivo rispetta il carattere predefinito impostato nel file di progetto.
Altri progettisti di runtime
Le finestre di progettazione esistenti in .NET Framework e che hanno abilitato la creazione di una finestra di progettazione per utilizzo generico, ad esempio la creazione di una finestra di progettazione report, sono state aggiunte a .NET 6:
- System.ComponentModel.Design.ComponentDesigner
- System.Windows.Forms.Design.ButtonBaseDesigner
- System.Windows.Forms.Design.ComboBoxDesigner
- System.Windows.Forms.Design.ControlDesigner
- System.Windows.Forms.Design.DocumentDesigner
- System.Windows.Forms.Design.DocumentDesigner
- System.Windows.Forms.Design.FormDocumentDesigner
- System.Windows.Forms.Design.GroupBoxDesigner
- System.Windows.Forms.Design.LabelDesigner
- System.Windows.Forms.Design.ListBoxDesigner
- System.Windows.Forms.Design.ListViewDesigner
- System.Windows.Forms.Design.MaskedTextBoxDesigner
- System.Windows.Forms.Design.PanelDesigner
- System.Windows.Forms.Design.ParentControlDesigner
- System.Windows.Forms.Design.ParentControlDesigner
- System.Windows.Forms.Design.PictureBoxDesigner
- System.Windows.Forms.Design.RadioButtonDesigner
- System.Windows.Forms.Design.RichTextBoxDesigner
- System.Windows.Forms.Design.ScrollableControlDesigner
- System.Windows.Forms.Design.ScrollableControlDesigner
- System.Windows.Forms.Design.TextBoxBaseDesigner
- System.Windows.Forms.Design.TextBoxDesigner
- System.Windows.Forms.Design.ToolStripDesigner
- System.Windows.Forms.Design.ToolStripDropDownDesigner
- System.Windows.Forms.Design.ToolStripItemDesigner
- System.Windows.Forms.Design.ToolStripMenuItemDesigner
- System.Windows.Forms.Design.TreeViewDesigner
- System.Windows.Forms.Design.UpDownBaseDesigner
- System.Windows.Forms.Design.UserControlDocumentDesigner
Miglioramenti dpi elevati per PerMonitorV2
Il rendering con valori DPI elevati con PerMonitorV2 è stato migliorato:
I controlli vengono creati con la stessa sensibilità DPI dell'applicazione.
I controlli contenitore e le finestre figlio MDI hanno comportamenti di ridimensionamento migliorati.
Ad esempio, in .NET 5, lo spostamento di un'app Windows Forms da un monitor con scalabilità del 200% a un monitor con scalabilità del 100% genera controlli posizionati in modo errato. Questo è stato notevolmente migliorato in .NET 6:
Nuove API
- System.Windows.Forms.Application.SetDefaultFont
- System.Windows.Forms.Control.IsAncestorSiteInDesignMode
- System.Windows.Forms.ProfessionalColors.StatusStripBorder
- System.Windows.Forms.ProfessionalColorTable.StatusStripBorder
Nuove API di Visual Basic
- Microsoft.VisualBasic.ApplicationServices.ApplyApplicationDefaultsEventArgs
- Microsoft.VisualBasic.ApplicationServices.ApplyApplicationDefaultsEventHandler
- Microsoft.VisualBasic.ApplicationServices.ApplyApplicationDefaultsEventArgs.MinimumSplashScreenDisplayTime
- Microsoft.VisualBasic.ApplicationServices.ApplyApplicationDefaultsEventArgs.MinimumSplashScreenDisplayTime
- Microsoft.VisualBasic.ApplicationServices.ApplyApplicationDefaultsEventArgs.Font
- Microsoft.VisualBasic.ApplicationServices.ApplyApplicationDefaultsEventArgs.Font
- Microsoft.VisualBasic.ApplicationServices.ApplyApplicationDefaultsEventArgs.HighDpiMode
- Microsoft.VisualBasic.ApplicationServices.ApplyApplicationDefaultsEventArgs.HighDpiMode
- Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.ApplyApplicationDefaults
- Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.HighDpiMode
- Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.HighDpiMode
API aggiornate
System.Windows.Forms.Control.Invoke accetta System.Action ora e System.Func<TResult> come parametri di input.
System.Windows.Forms.Control.BeginInvoke accetta System.Action ora come parametro di input.
System.Windows.Forms.DialogResult viene esteso con i membri seguenti:
TryAgain
Continue
System.Windows.Forms.Form ha una nuova proprietà: MdiChildrenMinimizedAnchorBottom
System.Windows.Forms.MessageBoxButtons viene esteso con il membro seguente:
CancelTryContinue
System.Windows.Forms.MessageBoxDefaultButton viene esteso con il membro seguente:
Button4
System.Windows.Forms.LinkClickedEventArgs ha ora un nuovo costruttore ed è esteso con le proprietà seguenti:
System.Windows.Forms.NotifyIcon.Text è ora limitato a 127 caratteri (da 63).
Accessibilità migliorata
I modelli di Automazione dell'interfaccia utente di Microsoft funzionano meglio con strumenti di accessibilità come Narratore e Jaws.
Vedere anche
.NET Desktop feedback