winform 如何控制 一个窗口只打开一个 不可以多个打开
展开全部
你可以这样做吗。第一种是在调用窗体里面来判断的,第二种是给被调用窗体定义成单模式窗体。
第一种实现起来相对来说比较简单,但是如果在多处都要判断的话,那就比较麻烦了,第二种就是保证每次调用你的这个窗体的时候都是一个。不会去新创建一次的。
第一种方法是,定义一个全局变量,就是被调用窗体的实例化,然后在调用函数里面进行判断的判断这个窗体是否已经被实例化了,如果没有,就实例化一个窗体。如果已经实例化了,就调用show()函数,让其显示出来。
具体就是,SecondWinForm swm ;
if(swm != null)
{
swm.show();
}
else
{
swm = new SecondWinForm();
}
第一种实现起来相对来说比较简单,但是如果在多处都要判断的话,那就比较麻烦了,第二种就是保证每次调用你的这个窗体的时候都是一个。不会去新创建一次的。
第一种方法是,定义一个全局变量,就是被调用窗体的实例化,然后在调用函数里面进行判断的判断这个窗体是否已经被实例化了,如果没有,就实例化一个窗体。如果已经实例化了,就调用show()函数,让其显示出来。
具体就是,SecondWinForm swm ;
if(swm != null)
{
swm.show();
}
else
{
swm = new SecondWinForm();
}
展开全部
有时在WinForm中,窗口要求是只打开一个的或许很多时候我们会为每个BUTTON写个事件,在事件里写同样的代码来判断是否有打开窗口,其实我们可以使用泛型和约束来写一个公共的方法,来判断是否打开相同的窗口。方法如下:
private void ShowOrActiveForm<T>(string FormName) where T:Form,new()
{
#region
Form fm;
if (Application.OpenForms[FormName] != null)
{
fm = Application.OpenForms[FormName];
fm.Activate();
}
else
{
fm = new T();
fm.MdiParent = this;
fm.Show();
}
#endregion
}
这里定义了一个泛型T,并进行了约束:where T:Form,new()
调用方法如下:ShowOrActiveForm<UserMain>("UserMain");
其中<UserMain>里面写的是一个Form的类名,("UserMain")里面写的是用来判断的字符串
private void ShowOrActiveForm<T>(string FormName) where T:Form,new()
{
#region
Form fm;
if (Application.OpenForms[FormName] != null)
{
fm = Application.OpenForms[FormName];
fm.Activate();
}
else
{
fm = new T();
fm.MdiParent = this;
fm.Show();
}
#endregion
}
这里定义了一个泛型T,并进行了约束:where T:Form,new()
调用方法如下:ShowOrActiveForm<UserMain>("UserMain");
其中<UserMain>里面写的是一个Form的类名,("UserMain")里面写的是用来判断的字符串
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用单件模式,简单的做法是将窗体的构造器设为private, 然后自定义一个静态方法。
参考:
C# 使用单件模式设计一个标准的等待窗体
http://www.csframework.com/archive/2/arc-2-20110322-1218.htm
参考:
C# 使用单件模式设计一个标准的等待窗体
http://www.csframework.com/archive/2/arc-2-20110322-1218.htm
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-07-22
展开全部
建议学习一下winform的MDI开发吧.很简单的
可以直接生成MDI应用程序,自动生成的代码即可解决此问题,而且MDI对界面控制是有很大优势的。文库里面有很多这样的资料。
可以直接生成MDI应用程序,自动生成的代码即可解决此问题,而且MDI对界面控制是有很大优势的。文库里面有很多这样的资料。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是控制程序多次运行可以利用进程判断,如果有相同的进程就立马推出。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询