Visual Studio: disabilitazione SplashScreen a runtime

A partire se ben ricordo dalla versione 2005 Visual Studio mette a disposizione un modo estremamente semplice per gestire le SplashScreen all’avvio dell’applicazione. Infatti per attivarne la visualizzazione basta impostare l’utilizzo della Form nelle proprietà dell’applicazione.

image

Se si desidera in base a certe condizioni non visualizzare la SplahScreen, per esempio sulla base di un’impostazione utente dell’applicazione che consente di evitare la visualizzazione leggendo vari post su blog e forum vari approcci, ma quello che alla fine preferisco l’h trovato leggendo questo articolo della library di MSDN WindowsFormsApplicationBase.OnInitialize Method dove viene specificato quanto segue:

“By default, this method sets the visual styles, text display styles, and current principal for the main application thread (if the application uses Windows authentication), and calls ShowSplashScreen if neither /nosplash nor -nosplash is used as a command-line argument.”

Questo significa che oltre a disabilitare lo SplashScreen passano all’applicazione il parametro /nosplash o –nosplash è possibile gestire a runtime la disabilitazione della visualizzazione itervenendo nella funzione OnInitialize della classe MyApplication all’interno del file ApplicationEvents.vb accessibile tramite il pulsante View Application Events.

Infatti come descritto nel seguente Estensione del modello di applicazione Visual Basic la funzione OnInitialize si occupa di visualizzare la SplashScreen.

Modello di applicazioni Visual Basic -- Esecuzione 

Quindi è possibile gestire la disabilitazione della visualizzazione della SplashScreen andando ad aggiungere a runtime il parametro /nosplash o –nosplash in questo modo:

Protected Overrides Function OnInitialize(ByVal commandLineArgs As System.Collections.ObjectModel.ReadOnlyCollection(Of String)) As Boolean
    
    Dim showSplashScreen = True

    ‘Gestione della verifica delle condizioni
    ‘in base a cui visualizzare la SplashScreen
    ‘con conseguente impostazione del flag showSplashScreen

    ‘Disattivazioner SplashScreen
    If Not showSplashScreen Then
        Dim commandLineArgsNoSpash As New List(Of String)(commandLineArgs)
        commandLineArgsNoSpash.Add(“/nosplash”)
        commandLineArgs = _
        New System.Collections.ObjectModel.ReadOnlyCollection(Of String)(commandLineArgsNoSpash)
    End If

    Return MyBase.OnInitialize(commandLineArgs)
End Function

Per ulteriori informazioni si veda anche il post VB.NET: Main o Modello di Applicazione.