我有一个表单,当单击一个按钮(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(); } }
窗体2:
class Form2 : Form { public void Form2_buttonclick(object sender, EventArgs e) { Form1 f1 = new Form1(); f1.Disposef2(); } }
有没有其他更好的方法来做到这一点.或者C#设计本身并不提供替代机制.我是C#的新手.请帮帮我..
编辑
我想关闭(显式处置)form2对象,当单击form2上的按钮时,该对象在form1类中创建.此编辑旨在提供更清晰的信息.
关于处理表单的MSDN文档:
如果使用Show方法显示表单,将自动调用Dispose.如果使用其他方法(如ShowDialog),或者根本不显示表单,则必须在应用程序中调用Dispose.
资源
关闭与处置:
关闭表单时,将关闭对象中创建的所有资源并处理表单.您可以通过处理Closing事件并将作为参数传递的CancelEventArgs的Cancel属性设置为事件处理程序来阻止在运行时关闭表单.如果您要关闭的表单是应用程序的启动表单,则应用程序结束.
表单未在Close上处理时的两个条件是(1)它是多文档界面(MDI)应用程序的一部分,并且表单不可见; (2)您使用ShowDialog显示了表单.在这些情况下,您需要手动调用Dispose以标记所有表单的垃圾回收控件.