Creare una splash screen in Visual Basic .NET è molto semplice. Bisogna infatti definire nelle proprietà del progetto quale form è la splash screen. In C# purtroppo questo supporto non è presente. Per raggiungere tale obiettivo in C# è necessario crearsi una classe (es. MyApplication) che derivi da WindowsFormsApplicationBase. Questa classe base è presente nell'assembly Microsoft.VisualBasic.dll, pertanto sarà necessario aggiungerlo come referenza del progetto.
Creata la classe MyApplication dovremo sostituire la chiamata alla creazione della main form nel metodo statico Main di Program con la nostra classe:
static class Program
{
[STAThread]
static void Main()
{
MyApplication application = new MyApplication();
application.Run(new string[] { });
}
}
La classe MyApplication deve obbligatoriamente definire quale sarà la form princiale (main form) che dovrà essere richiamata all'avvio del programma. Sarà pertanto necessario fare l'override del metodo OnCreateMainForm come di seguito esposto:
public class MyApplication : WindowsFormsApplicationBase
{
protected override void OnCreateMainForm()
{
this.MainForm = new MainForm();
}
}
a questo punto, per definire la splash screen è sufficiente fare l'override del metodo OnCreateSplashScreen indicando la form da visualizzare all'avvio
public class MyApplication : WindowsFormsApplicationBase
{
protected override void OnCreateMainForm()
{
this.MainForm = new MainForm();
}
protected override void OnCreateSplashScreen()
{
this.SplashScreen = new SplashScreen();
}
}
In questo modo la splash screen verrà visualizzata sino a quando la main form non ha completato il caricamento. Qualora fosse richiesto un tempo di visualizzazione maggiore è possibile definire questo tempo attraverso la proprietà MinimumSplashScreenDisplayTime nell'inizializzazione:
publicl class MyApplication : WindowsFormsApplicationBase
{
//....
protected override bool OnInitialize(System.Collections.ObjectModel.ReadOnlyCollection<string> commandLineArgs)
{
// Si visualizza per 3 secondi
this.MinimumSplashScreenDisplayTime = 3000;
return base.OnInitialize(commandLineArgs);
}
}
In questo esempio il tempo di caricamento della form principale è sotto i 3 secondi allora la splash screen rimarrà visualizzata per 3 secondi, altrimenti per il tempo necessario alla form principale di attivarsi.