winformフォームで1つのみを開くように設定する方法は何ですか?
Winformウィンドウが1つのインスタンスしか開けないように設定するには、シングルトンパターンを使用することができます。
- 最初に、ウィンドウのクラスにプライベートな静的メンバ変数を追加して、唯一のインスタンスを保存する。
private static Form1 instance;
- その後、ウィンドウのコンストラクタをプライベートに設定して、newキーワードを使用してインスタンスを直接作成することを防ぎます。
private Form1()
{
InitializeComponent();
}
- 次に、ウィンドウの唯一のインスタンスを取得するための公開された静的メソッドを作成します。このメソッドでは、まずインスタンスが既に存在するかどうかを確認し、存在しない場合は新しいインスタンスを作成して静的メンバ変数に保存し、最後にインスタンスを返します。
public static Form1 GetInstance()
{
if (instance == null || instance.IsDisposed)
{
instance = new Form1();
}
return instance;
}
- 必要な箇所で、ウィンドウを開く場合は、GetInstanceメソッドを呼び出してウィンドウのインスタンスを取得し、表示します。
Form1 form = Form1.GetInstance();
form.Show();
GetInstanceメソッドを何回呼び出しても、常に同じウィンドウインスタンスが返されるため、1つのウィンドウしか開かれないことが保証されます。