端くれプログラマの備忘録 C# [C#] スプラッシュスクリーンを表示する

[C#] スプラッシュスクリーンを表示する

Windowsアプリにスプラッシュスクリーンを表示したい場合がある。その場限りの使用を想定した自前ユーティリティには必要ないけど、商品としてリリースされる予定の受託アプリには必ずと言っていいほどスプラッシュスクリーンの表示が求められる。

以下のページにわかりやすい具体例がある。

@IT:.NET TIPS Windowsアプリケーションでスプラッシュ・スクリーンを表示するには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/223splashscrn/splashscrn.html

スプラッシュスクリーンを表示するコードを以下に抜粋。留意点は ①スプラッシュスクリーンはモードレスフォームとして表示する ②スプラッシュスクリーン表示中のバックグラウンド処理ではDoEvents()を回す ③スプラッシュスクリーンを閉じた後はメインフォームにフォーカスを渡す、の3点。

private void Form1_Load(object sender, System.EventArgs e)
{
    SplashScreen splash = new SplashScreen();
    splash.Show();
    splash.Refresh();
 
    string[] allfiles = Directory.GetFiles("C:\\Windows");
    foreach (string curfile in allfiles)
    {
        splash.ProgressMsg = "Loading " + curfile + "...";
        Application.DoEvents();
        Thread.Sleep(10);
    }
 
    splash.Close();
    splash.Dispose();
 
    this.Activate();
}