在C#中处理来自父表单的表单?

Enj*_*ing 4 c# forms dispose class object

我有一个表单,当单击一个按钮(form1button)时将打开一个新表单.在子表单上会有另一个按钮'form2button'.现在,如果我单击此form2按钮,则应该处理新的form2.但是因为form2对象是在form1类方法中创建的,所以我无法在form2类方法中处理该对象(fom2buttonclick).所以我使用static来完成我的工作,如下面的psuedo代码.

Form1中:

class Form1 : Form
{
    static Form2 f2;

    public void Form1_buttonclick(object sender, EventArgs e)
    {
        f2 = new Form2();
    }

    public void Disposef2()
    {
        f2.Dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)

窗体2:

class Form2 : Form
{
    public void Form2_buttonclick(object sender, EventArgs e)
    {
        Form1 f1 = new Form1();
        f1.Disposef2();
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有其他更好的方法来做到这一点.或者C#设计本身并不提供替代机制.我是C#的新手.请帮帮我..

编辑

我想关闭(显式处置)form2对象,当单击form2上的按钮时,该对象在form1类中创建.此编辑旨在提供更清晰的信息.

Igo*_*ejc 7

关于处理表单的MSDN文档:

如果使用Show方法显示表单,将自动调用Dispose.如果使用其他方法(如ShowDialog),或者根本不显示表单,则必须在应用程序中调用Dispose.

资源

关闭与处置:

关闭表单时,将关闭对象中创建的所有资源并处理表单.您可以通过处理Closing事件并将作为参数传递的CancelEventArgs的Cancel属性设置为事件处理程序来阻止在运行时关闭表单.如果您要关闭的表单是应用程序的启动表单,则应用程序结束.

表单未在Close上处理时的两个条件是(1)它是多文档界面(MDI)应用程序的一部分,并且表单不可见; (2)您使用ShowDialog显示了表单.在这些情况下,您需要手动调用Dispose以标记所有表单的垃圾回收控件.