我们经常会遇到这种情况:单击窗体上一个按钮,弹出一个子窗体,当再次单击按钮是,还会弹出一个同样的窗体,我们肯定不希望这样。这个问题我们可以通过“单例模式”解决,那么什么是“单例模式”?
单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
显然单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。
下面来看一个示例
主窗口为MainForm,子窗口为ChildForm
//在子窗口中定义实例变量和获取该变量的属性
private static ChildForm instance = null;
public static ChildForm Instance
{
get
{
if(instance==null)
{
new ChildForm();
}
return instance;
}
}
//构造函数中
public ChildForm( )
{
InitializeComponent();
instance = this;
}
//窗体关闭后变量置空
private void ChildForm_FormClosed(object sender, FormClosedEventArgs e)
{
instance = null;
}
//MainForm中调用
private void tsbSelectByAttributes_Click(object sender, EventArgs e)
{
ChildForm CF = ChildForm.Instance;
CF.Show();
CF.Activate();
}
如果创建子窗口时要传递参数,将其属性改为方法就可以