经典的23种设计模式中的单件模式(Singleton),下面用C#实现之:
首先我们有2个Windows Form,主窗体叫Form1,子窗体叫ChildForm。在主窗体中加入一Menu,用来实例化子窗体,我们在Form1.cs中写入下代码:
private static ChildForm childForm; //静态变量,保存唯一实例
private void menuItem2_Click(object sender, System.EventArgs e)
{
ChildForm childForm = GetChildForm(); //获取子窗体对象
childForm.Show(); //显示之
}
} private ChildForm GetChildForm()
{
//先后次序不能错,前一个条件用来判断是否是第一次,后一个条件用来判断子窗体是否被关闭了
if( childForm == null || childForm.IsDisposed )
{ //第一次实例化也好,被关了也好,都重新实例化
childForm = new ChildForm();
childForm.MdiParent = this;
return childForm;
}
-------------------------------------------------------------------------
也可以这样判断呵
private void barButtonItem32_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
MachineGroupSetup frmMachineGroupSetup = null;
foreach(Form tmpForm in this.MdiChildren)
{
if(tmpForm is MachineGroupSetup)
{
frmMachineGroupSetup=(MachineGroupSetup)tmpForm;
break;
}
}
if(frmMachineGroupSetup!=null)
{
frmMachineGroupSetup.Show();
}
else
{
frmMachineGroupSetup = new MachineGroupSetup();
frmMachineGroupSetup.MdiParent = this;
frmMachineGroupSetup.Dock = DockStyle.Fill;
frmMachineGroupSetup.WindowState = FormWindowState.Maximized;
frmMachineGroupSetup.Show();
}
}
只是不知道如果不是在mdi状态下如何在内存中判断是否存在,继续想