Cambiamenti dirompenti in Windows Forms per .NET Core 3.0 e 3.1
Il supporto di Windows Form è stato aggiunto a .NET Core nella versione 3.0. Questo articolo elenca le modifiche di rilievo per Windows Form in base alla versione .NET in cui sono state introdotte. Se stai aggiornando un'app Windows Forms da .NET Framework o da una versione precedente di .NET Core (3.0 o versione successiva), questo articolo si applica a te.
Le modifiche di rilievo seguenti sono documentate in questa pagina:
.NET Core 3.1
Controlli rimossi
A partire da .NET Core 3.1, alcuni controlli Windows Form non sono più disponibili.
Modificare la descrizione
A partire da .NET Core 3.1, i vari controlli Windows Form non sono più disponibili. I controlli di sostituzione con progettazione e supporto migliori sono stati introdotti in .NET Framework 2.0. I controlli deprecati sono stati rimossi in precedenza dalle caselle degli strumenti della finestra di progettazione, ma erano ancora disponibili per l'uso.
I tipi seguenti non sono più disponibili:
- ContextMenu
- DataGrid
- DataGrid.HitTestType
- DataGrid.HitTestInfo
- DataGridBoolColumn
- DataGridCell
- DataGridColumnStyle
- DataGridColumnStyle.DataGridColumnHeaderAccessibleObject
- DataGridColumnStyle.CompModSwitches
- DataGridLineStyle
- DataGridParentRowsLabelStyle
- DataGridPreferredColumnWidthTypeConverter
- DataGridTableStyle
- DataGridTextBox
- DataGridTextBoxColumn
- GridColumnStylesCollection
- GridTablesFactory
- GridTableStylesCollection
- IDataGridEditingService
- IMenuEditorService
- MainMenu
- Menu
- Menu.MenuItemCollection
- MenuItem
- ToolBar
- ToolBarAppearance
- ToolBarButton
- ToolBar.ToolBarButtonCollection
- ToolBarButtonClickEventArgs
- ToolBarButtonStyle
- ToolBarTextAlign
Versione introdotta
3.1
Azione consigliata
Ogni controllo rimosso ha un controllo sostitutivo consigliato. Fare riferimento alla tabella seguente:
Controllo rimosso (API) | Sostituzione consigliata | API associate che vengono rimosse |
---|---|---|
ContextMenu | ContextMenuStrip | |
DataGrid | DataGridView | DataGridCell, DataGridRow, DataGridTableCollection, DataGridColumnCollection, DataGridTableStyle, DataGridColumnStyle, DataGridLineStyle, DataGridParentRowsLabel, DataGridParentRowsLabelStyle, DataGridBoolColumn, DataGridTextBox, GridColumnStylesCollection, GridTableStylesCollection, HitTestType |
MenuPrincipale | MenuStrip | |
Menù | ToolStripDropDown, ToolStripDropDownMenu | MenuItemCollection |
Voce di menu | ToolStripMenuItem | |
Barra degli strumenti | Barra degli strumenti | Aspetto della Barra degli Strumenti |
Pulsante della Barra degli Strumenti | ToolStripButton | ToolBarButtonClickEventArgs, ToolBarButtonClickEventHandler, ToolBarButtonStyle, ToolBarTextAlign |
Categoria
Windows Forms
API interessate
- System.Windows.Forms.ContextMenu
- System.Windows.Forms.GridColumnStylesCollection
- System.Windows.Forms.GridTablesFactory
- System.Windows.Forms.GridTableStylesCollection
- System.Windows.Forms.IDataGridEditingService
- System.Windows.Forms.MainMenu
- System.Windows.Forms.Menu
- System.Windows.Forms.Menu.MenuItemCollection
- System.Windows.Forms.MenuItem
- System.Windows.Forms.ToolBar
- System.Windows.Forms.ToolBar.ToolBarButtonCollection
- System.Windows.Forms.ToolBarAppearance
- System.Windows.Forms.ToolBarButton
- System.Windows.Forms.ToolBarButtonClickEventArgs
- System.Windows.Forms.ToolBarButtonStyle
- System.Windows.Forms.ToolBarTextAlign
- System.Windows.Forms.DataGrid
- System.Windows.Forms.DataGrid.HitTestType
- System.Windows.Forms.DataGridBoolColumn
- System.Windows.Forms.DataGridCell
- System.Windows.Forms.DataGridColumnStyle
- System.Windows.Forms.DataGridLineStyle
- System.Windows.Forms.DataGridParentRowsLabelStyle
- System.Windows.Forms.DataGridPreferredColumnWidthTypeConverter
- System.Windows.Forms.DataGridTableStyle
- System.Windows.Forms.DataGridTextBox
- System.Windows.Forms.DataGridTextBoxColumn
- System.Windows.Forms.Design.IMenuEditorService
Evento CellFormatting non generato se viene visualizzato il tooltip.
Un DataGridView ora mostra il testo e i tooltip di errore di una cella quando viene passata con il mouse e quando viene selezionata tramite la tastiera. Se viene visualizzata una descrizione comando, l'evento DataGridView.CellFormatting non viene generato.
Modificare la descrizione
Prima di .NET Core 3.1, un DataGridView con la proprietà ShowCellToolTips impostata su true
mostrava una descrizione comando per il testo e gli errori di una cella quando il mouse passava sopra la cella. Le descrizioni comandi non venivano visualizzate quando veniva selezionata una cella tramite tastiera, ad esempio utilizzando il tasto Tab, i tasti di scelta rapida o i tasti freccia. Se l'utente ha modificato una cella e quindi, mentre il DataGridView era ancora in fase di modifica, ha passato il cursore su una cella che non aveva impostata la proprietà ToolTipText, è stato generato un evento CellFormatting per formattare il testo della cella per la visualizzazione.
Per soddisfare gli standard di accessibilità, a partire da .NET Core 3.1, un DataGridView con la proprietà ShowCellToolTips impostata su true
mostra le descrizioni comando per il testo e gli errori di una cella non solo quando la cella viene spostata al passaggio del mouse, ma anche quando viene selezionata tramite la tastiera. Come conseguenza di questa modifica, l'evento CellFormatting viene non generato quando le celle che non dispongono della proprietà ToolTipText sono evidenziate al passaggio del mouse mentre DataGridView è in modalità modifica. L'evento non si attiva perché il contenuto della cella su cui si passa il mouse viene mostrato come tool-tip invece di essere visualizzato nella cella.
Versione introdotta
3.1
Azione consigliata
Rifattorizza il codice che dipende dall'evento CellFormatting mentre l'evento DataGridView è in modalità di modifica.
Categoria
Windows Forms
API interessate
Nessuno
.NET Core 3.0
Il tipo di carattere del controllo predefinito è stato modificato in Segoe UI 9 pt
Modificare la descrizione
In .NET Framework la proprietà Control.DefaultFont è stata impostata su Microsoft Sans Serif 8.25 pt
. L'immagine seguente mostra una finestra che usa il tipo di carattere predefinito.
A partire da .NET Core 3.0, il tipo di carattere predefinito è impostato su Segoe UI 9 pt
(lo stesso tipo di carattere di SystemFonts.MessageBoxFont). In seguito a questa modifica, i moduli e i controlli vengono ingranditi di circa 27 unità% per adeguarsi alle dimensioni maggiori del nuovo font predefinito. Per esempio:
Questa modifica è stata apportata per allinearsi alle linee guida dell'esperienza utente di Windows .
Versione introdotta
3.0
Azione consigliata
Assicurarsi che l'applicazione venga visualizzata correttamente a causa della modifica delle dimensioni dei moduli e dei controlli.
Per mantenere il tipo di carattere originale per un singolo modulo, impostarne il tipo di carattere predefinito su Microsoft Sans Serif 8.25 pt
. Per esempio:
public MyForm()
{
InitializeComponent();
Font = new Font(new FontFamily("Microsoft Sans Serif"), 8.25f);
}
In alternativa, è possibile modificare il tipo di carattere predefinito per un'intera applicazione in uno dei modi seguenti:
Impostando la proprietà
ApplicationDefaultFont
MSBuild su *"Microsoft Sans Serif, 8.25pt"*. Questa è la tecnica preferita perché consente a Visual Studio di usare le nuove impostazioni nella finestra di progettazione.<PropertyGroup> <ApplicationDefaultFont>Microsoft Sans Serif, 8.25pt</ApplicationDefaultFont> </PropertyGroup>
Chiamando Application.SetDefaultFont(Font).
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()); } }
Categoria
- Windows Forms
API interessate
Nessuno.
Modernizzazione di FolderBrowserDialog
Il controllo FolderBrowserDialog è stato modificato nelle applicazioni Windows Form per .NET Core.
Modificare la descrizione
In .NET Framework Windows Form usa la finestra di dialogo seguente per il controllo FolderBrowserDialog:
In .NET Core 3.0 Windows Form usa un controllo basato su COM più recente introdotto in Windows Vista:
Versione introdotta
3.0
Azione consigliata
La finestra di dialogo verrà aggiornata automaticamente.
Se si desidera mantenere la finestra di dialogo originale, impostare la proprietà FolderBrowserDialog.AutoUpgradeEnabled su false
prima di visualizzare il dialogo, come illustrato nel frammento di codice seguente:
var dialog = new FolderBrowserDialog();
dialog.AutoUpgradeEnabled = false;
dialog.ShowDialog();
Categoria
Windows Forms
API interessate
SerializableAttribute rimosso da alcuni tipi di Windows Forms
Il SerializableAttribute è stato rimosso da alcune classi di Windows Form che non hanno scenari di serializzazione binari noti.
Modificare la descrizione
I tipi seguenti sono decorati con il SerializableAttribute in .NET Framework, ma l'attributo è stato rimosso in .NET Core:
System.InvariantComparer
- System.ComponentModel.Design.ExceptionCollection
- System.ComponentModel.Design.Serialization.CodeDomSerializerException
System.ComponentModel.Design.Serialization.CodeDomComponentSerializationService.CodeDomSerializationStore
- System.Drawing.Design.ToolboxItem
System.Resources.ResXNullRef
System.Resources.ResXDataNode
System.Resources.ResXFileRef
- System.Windows.Forms.Cursor
System.Windows.Forms.NativeMethods.MSOCRINFOSTRUCT
System.Windows.Forms.NativeMethods.MSG
Storicamente, questo meccanismo di serializzazione ha avuto gravi problemi di manutenzione e sicurezza. La gestione di SerializableAttribute
sui tipi significa che questi tipi devono essere testati per le modifiche di serializzazione da versione a versione e potenzialmente modifiche alla serializzazione da framework a framework. In questo modo è più difficile evolvere tali tipi e può essere costoso da gestire. Questi tipi non hanno scenari di serializzazione binari noti, riducendo al minimo l'impatto della rimozione dell'attributo.
Per ulteriori informazioni, vedere Serializzazione Binaria.
Versione introdotta
3.0
Azione consigliata
Aggiornare qualsiasi codice che può dipendere da questi tipi contrassegnati come serializzabili.
Categoria
Windows Forms
API interessate
- Nessuno
Opzione di compatibilità AllowUpdateChildControlIndexForTabControls non supportata
L'opzione di compatibilità Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls
è supportata in Windows Form in .NET Framework 4.6 e versioni successive, ma non è supportata in .NET Core o .NET 5.0 e versioni successive.
Modificare la descrizione
In .NET Framework 4.6 e versioni successive selezionare una scheda riordina la raccolta di controlli. L'opzione di compatibilità Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls
consente a un'applicazione di ignorare questo riordinamento quando questo comportamento è indesiderato.
In .NET Core e .NET 5.0 e versioni successive, l'opzione Switch.System.Windows.Forms.AllowUpdateChildControlIndexForTabControls
non è supportata.
Versione introdotta
3.0
Azione consigliata
Rimuovere l'interruttore. L'opzione non è supportata e non è disponibile alcuna funzionalità alternativa.
Categoria
Windows Forms
API interessate
- Nessuno
Opzione di compatibilità DomainUpDown.UseLegacyScrolling non supportata
L'opzione di compatibilità Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling
introdotta in .NET Framework 4.7.1 non è supportata in Windows Form in .NET Core o .NET 5.0 e versioni successive.
Modificare la descrizione
A partire da .NET Framework 4.7.1, l'interruttore di compatibilità Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling
permette agli sviluppatori di escludere le azioni indipendenti DomainUpDown.DownButton() e DomainUpDown.UpButton(). L'opzione ha ripristinato il comportamento legacy, in cui il DomainUpDown.UpButton() viene ignorato se il testo del contesto è presente e lo sviluppatore deve utilizzare l'azione DomainUpDown.DownButton() sul controllo prima di eseguire l'azione DomainUpDown.UpButton(). Per altre informazioni, vedere <l'elemento AppContextSwitchOverrides>.
In .NET Core e .NET 5.0 e versioni successive, l'opzione Switch.System.Windows.Forms.DomainUpDown.UseLegacyScrolling
non è supportata.
Versione introdotta
3.0
Azione consigliata
Rimuovere l'interruttore. L'opzione non è supportata e non è disponibile alcuna funzionalità alternativa.
Categoria
Windows Forms
API interessate
Interruttore di compatibilità "DoNotLoadLatestRichEditControl" non supportato
L'opzione di compatibilità Switch.System.Windows.Forms.UseLegacyImages
introdotta in .NET Framework 4.7.1 non è supportata in Windows Form in .NET Core o .NET 5.0 e versioni successive.
Modificare la descrizione
In .NET Framework 4.6.2 e versioni precedenti, il controllo RichTextBox crea un'istanza del controllo RichEdit Win32 v3.0 e per le applicazioni destinate a .NET Framework 4.7.1, il controllo RichTextBox crea un'istanza di RichEdit v4.1 (in msftedit.dll). Il commutatore di compatibilità Switch.System.Windows.Forms.DoNotLoadLatestRichEditControl
è stato introdotto per consentire alle applicazioni destinate a .NET Framework 4.7.1 e versioni successive di rifiutare esplicitamente il nuovo controllo RichEdit v4.1 e usare invece il vecchio controllo RichEdit v3.
In .NET Core e .NET 5.0 e versioni successive, l'opzione Switch.System.Windows.Forms.DoNotLoadLatestRichEditControl
non è supportata. Sono supportate solo le nuove versioni del controllo RichTextBox.
Versione introdotta
3.0
Azione consigliata
Rimuovere l'interruttore. L'opzione non è supportata e non è disponibile alcuna funzionalità alternativa.
Categoria
Windows Forms
API interessate
Opzione di compatibilità DoNotSupportSelectAllShortcutInMultilineTextBox non supportata
L'opzione di compatibilità Switch.System.Windows.Forms.DoNotSupportSelectAllShortcutInMultilineTextBox
introdotta in .NET Framework 4.6.1 non è supportata in Windows Form in .NET Core e .NET 5.0 e versioni successive.
Modificare la descrizione
A partire da .NET Framework 4.6.1, selezionando il tasto di scelta rapida CTRL + A in un controllo TextBox, veniva selezionato tutto il testo. In .NET Framework 4.6 e versioni precedenti, selezionando il CTRL + Tasto di scelta rapida non è riuscito a selezionare tutto il testo se la Textbox.ShortcutsEnabled e le proprietà TextBox.Multiline sono entrambe impostate su true
. Il commutatore di compatibilità Switch.System.Windows.Forms.DoNotSupportSelectAllShortcutInMultilineTextBox
è stato introdotto in .NET Framework 4.6.1 per mantenere il comportamento originale. Per altre informazioni, vedere TextBox.ProcessCmdKey.
In .NET Core e .NET 5.0 e versioni successive, l'opzione Switch.System.Windows.Forms.DoNotSupportSelectAllShortcutInMultilineTextBox
non è supportata.
Versione introdotta
3.0
Azione consigliata
Rimuovere l'interruttore. L'opzione non è supportata e non è disponibile alcuna funzionalità alternativa.
Categoria
Windows Forms
API interessate
- Nessuno
Opzione di compatibilità DontSupportReentrantFilterMessage non supportata
L'opzione di compatibilità Switch.System.Windows.Forms.DontSupportReentrantFilterMessage
introdotta in .NET Framework 4.6.1 non è supportata in Windows Form in .NET Core e .NET 5.0 e versioni successive.
Modificare la descrizione
A partire da .NET Framework 4.6.1, l'opzione di compatibilità Switch.System.Windows.Forms.DontSupportReentrantFilterMessage
risolve possibili eccezioni IndexOutOfRangeException quando viene chiamato il messaggio Application.FilterMessage con un'implementazione IMessageFilter.PreFilterMessage personalizzata. Per ulteriori informazioni, vedere la sezione Mitigazione: Implementazioni personalizzate di IMessageFilter.PreFilterMessage.
In .NET Core e .NET 5.0 e versioni successive, l'opzione Switch.System.Windows.Forms.DontSupportReentrantFilterMessage
non è supportata.
Versione introdotta
3.0
Azione consigliata
Rimuovere l'interruttore. L'opzione non è supportata e non è disponibile alcuna funzionalità alternativa.
Categoria
Windows Forms
API interessate
Opzione di compatibilità EnableVisualStyleValidation non supportata
L'opzione di compatibilità Switch.System.Windows.Forms.EnableVisualStyleValidation
non è supportata in Windows Forms in .NET Core o .NET 5.0 e versioni successive.
Modificare la descrizione
In .NET Framework, l'opzione di compatibilità Switch.System.Windows.Forms.EnableVisualStyleValidation
ha consentito a un'applicazione di rifiutare esplicitamente la convalida degli stili di visualizzazione forniti in un formato numerico.
In .NET Core e .NET 5.0 e versioni successive, l'opzione Switch.System.Windows.Forms.EnableVisualStyleValidation
non è supportata.
Introdotta versione
3.0
Azione consigliata
Rimuovere l'interruttore. L'opzione non è supportata e non è disponibile alcuna funzionalità alternativa.
Categoria
Windows Forms
API interessate
- Nessuno
Opzione di compatibilità UseLegacyContextMenuStripSourceControlValue non supportata
L'opzione di compatibilità Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue
introdotta in .NET Framework 4.7.2 non è supportata in Windows Form in .NET Core o .NET 5.0 e versioni successive.
Modificare la descrizione
A partire da .NET Framework 4.7.2, l'opzione di compatibilità Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue
consente allo sviluppatore di rifiutare esplicitamente il nuovo comportamento della proprietà ContextMenuStrip.SourceControl, che ora restituisce un riferimento al controllo del codice sorgente. Il comportamento precedente della proprietà era quello di restituire null
. Per altre informazioni, vedere <l'elemento appContextSwitchOverrides>.
In .NET Core e .NET 5.0 e versioni successive, l'opzione Switch.System.Windows.Forms.UseLegacyContextMenuStripSourceControlValue
non è supportata.
Versione introdotta
3.0
Azione consigliata
Rimuovere l'interruttore. L'opzione non è supportata e non è disponibile alcuna funzionalità alternativa.
Categoria
Windows Forms
API interessate
Interruttore di compatibilità UseLegacyImages non supportato
L'opzione di compatibilità Switch.System.Windows.Forms.UseLegacyImages
introdotta in .NET Framework 4.8 non è supportata in Windows Form in .NET Core o .NET 5.0 e versioni successive.
Modificare la descrizione
A partire da .NET Framework 4.8, il commutatore di compatibilità Switch.System.Windows.Forms.UseLegacyImages
ha risolto i possibili problemi di ridimensionamento delle immagini negli scenari ClickOnce in ambienti con valori DPI elevati. Se impostato su true
, l'interruttore consente all'utente di ripristinare il ridimensionamento delle immagini legacy su schermi DPI elevati la cui scala è impostata su un valore superiore al 100%. Per altre informazioni, vedere note sulla versione di .NET Framework 4.8 in GitHub.
In .NET Core e .NET 5.0 e versioni successive, l'opzione Switch.System.Windows.Forms.UseLegacyImages
non è supportata.
Versione introdotta
3.0
Azione consigliata
Rimuovere l'interruttore. L'opzione non è supportata e non è disponibile alcuna funzionalità alternativa.
Categoria
Windows Forms
API interessate
- Nessuno
I modelli About e SplashScreen sono non funzionanti
I file About.vb
e SplashScreen.vb
generati da Visual Studio contengono riferimenti ai tipi nello spazio dei nomi My
che non sono disponibili in .NET Core 3.0 e 3.1.
Versione introdotta
3.0
Modificare la descrizione
.NET Core 3.0 e 3.1 non contengono il supporto completo di Visual Basic My
. Le Informazioni su e modelli di modulo SplashScreen in Visual Studio per le app Windows Form di Visual Basic nel tipo di My.Application.Info
non disponibili.
Azione consigliata
Il supporto di Visual Basic My
è stato migliorato in .NET 5, aggiornare il progetto a .NET 5 o versione successiva.
-o-
Correggi gli errori del compilatore nei tipi About e SplashScreen della tua app. Usare la classe System.Reflection.Assembly
per ottenere le informazioni fornite dal tipo My.Application.Info
. Qui è disponibile una porta dritta di entrambe le forme.
Mancia
Si tratta di codice di esempio e non ottimizzata. L'elenco degli attributi deve essere memorizzato nella cache per ridurre il tempo di caricamento dei moduli.
Informazioni su
Imports System.Reflection
Public NotInheritable Class About
Private Sub about_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' Set the title of the form.
Dim applicationTitle As String = Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyTitleAttribute)()?.Title
If String.IsNullOrEmpty(applicationTitle) Then
applicationTitle = System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().GetName().Name)
End If
Me.Text = String.Format("About {0}", applicationTitle)
' Initialize all of the text displayed on the About Box.
' TODO: Customize the application's assembly information in the "Application" pane of the project
' properties dialog (under the "Project" menu).
Me.LabelProductName.Text = If(Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyProductAttribute)()?.Product, "")
Me.LabelVersion.Text = String.Format("Version {0}", Assembly.GetExecutingAssembly().GetName().Version)
Me.LabelCopyright.Text = If(Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyCopyrightAttribute)()?.Copyright, "")
Me.LabelCompanyName.Text = If(Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyCompanyAttribute)()?.Company, "")
Me.TextBoxDescription.Text = If(Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyDescriptionAttribute)()?.Description, "")
End Sub
Private Sub OKButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OKButton.Click
Me.Close()
End Sub
End Class
SplashScreen
Imports System.Reflection
Public NotInheritable Class SplashScreen
Private Sub SplashScreen1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Set up the dialog text at runtime according to the application's assembly information.
'TODO: Customize the application's assembly information in the "Application" pane of the project
' properties dialog (under the "Project" menu).
'Application title
Dim appTitle As String = Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyTitleAttribute)()?.Title
If String.IsNullOrEmpty(appTitle) Then
appTitle = System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().GetName().Name)
End If
ApplicationTitle.Text = appTitle
Dim versionValue = Assembly.GetExecutingAssembly().GetName().Version
'Format the version information using the text set into the Version control at design time as the
' formatting string. This allows for effective localization if desired.
' Build and revision information could be included by using the following code and changing the
' Version control's designtime text to "Version {0}.{1:00}.{2}.{3}" or something similar. See
' String.Format() in Help for more information.
'
' Version.Text = System.String.Format(Version.Text, versionValue.Major, versionValue.Minor, versionValue.Build, versionValue.Revision)
Version.Text = System.String.Format(Version.Text, versionValue.Major, versionValue.Minor)
'Copyright info
Copyright.Text = If(Assembly.GetExecutingAssembly().GetCustomAttribute(Of AssemblyCopyrightAttribute)()?.Copyright, "")
End Sub
End Class
Categoria
Forme Windows di Visual Basic
API interessate
Nessuno