多数のWinFormsを含む現在のプロジェクトを開発している間、フォームのオープン/クローズイベントを処理するためだけにコード行が乱雑になっていることに気づきました。現在、私はそれらをそのように扱っています。
//Declare forms
myForm mForm1;
myForm2 mForm2;
private void btnSomething_Click(object sender, EventArgs e)
{
if (mForm1 == null)
{
mForm1 = new myForm();
mForm1.FormClosed += new FormClosedEventHandler(mForm1_FormClosed);
mForm1.Show();
}
else
if (mForm1.WindowState == FormWindowState.Minimized)
mForm1.WindowState = FormWindowState.Normal;
mForm1.Focus();
}
void mForm1_FormClosed(object sender, FormClosedEventArgs e)
{
mForm1 = null;
}
そして、各フォームの開閉を処理するための別のボイドのセット。ここで、2つのフォームの代わりに、たとえば5つのフォームがあると想像してください。今、私はさらに散らかっています。これを一般化して、すべてのフォームに同じイベントハンドラーを持たせる方法はありますか?
「as」ステートメントでオブジェクト送信者を使用することを考えましたが、そこから関連する宣言されたフォームインスタンスをどのように見つけるかはわかりません。
sender as (form)
何か案は?