雖然開發一個包含多個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)
任何想法?
這可以工作,我會給它一個快速檢查:) –
我可能在我原來的問題中犯了一個錯誤。如果我的表單不是所有類型的myForm,會發生什麼?我們還可以推廣嗎? –
是的,自FormClosed事件在Form類中定義。請注意,泛型方法接受Form,而不是myForm(推測這是繼承Form)。 –