[C#] 起動時にメインフォームを非表示にする
C#では、Visible等を設定しても、起動時にメインフォームを非表示状態にすることができない。以下に起動時にメインフォームを非表示にする方法を紹介する。
Application.Runを使用する
この方法は非推奨である。この方法に使用するApplication.Exitはアプリケーションを強制終了させる命令であり、.NETのバージョンによってはOnCloseやOnClosing等のイベントが発生しない可能性があり、また、プロセスの終了は保証されていないため、使用は避けるべきである。
Program.cs
|
---|
1 2 3 4
|
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
new Form();
Application.Run();
|
以上のコードをエントリポイント内に記述する。エントリポイントは通常、プロジェクト作成時にProgram.cs内に「Main」という名前で自動的に作成される。
この方法を使った場合、メインフォームを閉じてもアプリケーションは終了しないため、Application.Exitを使用してアプリケーション自体を終了させる必要がある。Closeメソッド等も使用できない(フォームを閉じることはできる)。
最小化する
タスクバーへの表示を無効にし、ウィンドウを最小化する方法である。以下にその方法を用いたクラスを示す。以下のクラスを継承したフォームを使用することで、起動時に不可視のフォームを作ることができる(その他の挙動は同じ)。
InvisibleForm.cs
|
---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
using System.Windows.Forms;
namespace MWLib
{
public class InvisibleForm : Form
{
private bool first = true;
public InvisibleForm()
{
WindowState = FormWindowState.Minimized;
ShowInTaskbar = false;
}
public new void Show()
{
if (first)
{
ShowInTaskbar = true;
WindowState = FormWindowState.Normal;
first = false;
}
else
base.Show();
}
}
}
|
プロジェクトを作成した際に表示されるForm1の継承元クラスを上記のInvisibleFormに書き換えるだけで、起動時に非表示になる。
上記コードは、インスタンス生成時にタスクバーへの表示を無効にし、フォームを最小化している。初回表示時にはそれらの状態を元に戻し、2回目以降は元のShowメソッドを呼ぶ。
他にも、起動時にOpacityを0にして透明にする方法もあるが、それではWindows XP以前のOSでは普通に表示されてしまう。