虽然开发一个包含多个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)。 –