正在学设计模式呵,转载一篇如何保证一个窗体的实例运行
2006-06-08 16:53
639 查看
经典的23种设计模式中的单件模式(Singleton),下面用C#实现之:
首先我们有2个Windows Form,主窗体叫Form1,子窗体叫ChildForm。在主窗体中加入一Menu,用来实例化子窗体,我们在Form1.cs中写入下代码:
private static ChildForm childForm; //静态变量,保存唯一实例
private void menuItem2_Click
9804
(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状态下如何在内存中判断是否存在,继续想
首先我们有2个Windows Form,主窗体叫Form1,子窗体叫ChildForm。在主窗体中加入一Menu,用来实例化子窗体,我们在Form1.cs中写入下代码:
private static ChildForm childForm; //静态变量,保存唯一实例
private void menuItem2_Click
9804
(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状态下如何在内存中判断是否存在,继续想
相关文章推荐
- C#如何判断我的程序已经有一个实例正在运行
- 【转载】Java如何中断一个正在运行的线程
- Singleton单例模式是最简单的设计模式,它的主要作用是保证在程序执行生命周期中,使用了单类模式的类仅仅能有一个实例对象存在。
- 黄聪:如何判断VS开发C#是否为设计模式,以免编译之前操作窗体设计器代码自动运行
- [转载]如何在MDI中使子窗体只保留一个实例(反射方法)
- [转载]如何在MDI中使子窗体只保留一个实例(反射方法)
- 如何保证同时只有一个程序在系统中运行
- (转) c#中如何设计一个窗体关闭,另一个窗体打开?
- 复制一个web项目,项目名称如何修改,才能保证项目正常运行
- 如何让程序只运行一个实例(转)
- android如何终止一个正在运行的子线程
- 如何在终端使用后台运行模式启动一个Linux应用程序
- 保证程序只有一个实例运行并且先将旧实例关闭再运行新实例
- 单例模式--能够保证一个类仅有唯一的实例,并提供一个全局访问点。
- C# WinForm只允许运行一个窗体实例
- 我是如何学习设计模式的九:轻松一下,学习一个简单的:单例模式(最简单,但是也是最有用的)
- 实例讲解Java的多进程运行模式分析 --IT知道网(http://www.itwis.c...(转载)
- 设计模式---单件(C++版) 一个简单实例(避免用户忘记delete单件实例)
- 如何使应用程序只有一个实例在运行
- 转载一篇有趣的文章 -- 追MM与设计模式