单例模式实现实例产生一个窗体对象
开发过程中遇到了这样一种情况,单击按钮产生一个窗体并显示出来,但是每次点击都会弹出一个新的窗体,这与想要的效果不免有些差异。我们需要若子窗体已经显示出来,那么我们就不再需要实例化新的子窗体,若是子窗体还未实例化或者关闭了这个子窗体,我们就需要实例化新的子窗体。结合这种需求,和所需到的知识,下面我将提供一种解决方案。
修改前代码:
父窗体代码: ChildForm child = new ChildForm();
child.Show();
修改后代码:
子窗体代码
public partial class ChildForm : Form{
//声明静态对象
public static ChildForm child;
public ChildForm()
{
InitializeComponent();
}
public static ChildForm CreatSingleForm2()
{
//窗体是否已在内存中存在,不存在就实例化,然后返回此实例
if(child==null)
{
child = new ChildForm();
}
return child;
}
//在窗体关闭后清空窗体在内存中占用的空间
private void ChildForm_FormClosed(object sender, FormClosedEventArgs e)
{
child = null;
}
}
父窗体代码:
ChildForm child = ChildForm.CreatSingleForm2();
child.Show();