C#怎样能不重复打开窗体(不一定是MDI)

我在form1中用了一个public静态变量 来存储about窗体是否打开,但是在about在关闭时不能修改form1中的变量,怎样才能修改呢,或者还有更好的方法吗?
不是单例模式,要打开很多窗口,我希望好管理,以后可以更好的扩展

public partial class Form2 : Form
{
private Form2()
{
InitializeComponent();

}
private static Form2 f2 = new Form2();
public static Form2 getf2()
{
if (f2.IsDisposed)
{
f2 = new Form2();
return f2;
}
else
{
return f2;
}
}
}

这就是适用你的单例模式

怎么还不给分

private void button1_Click(object sender, EventArgs e)
{
Form2.getf2().Show();
Form2.getf2().Activate();
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-12-04
用用这个:
private Form od = null;
private void button2_Click(object sender, System.EventArgs e)
{
if (od == null || ! od.Created)
od = new old();
od.Show();
}
第2个回答  2008-12-04
调用事件closing就行了!
第3个回答  2008-12-04
每次都关掉,new出新的就把原来的close();
第4个回答  2008-12-04
请参照设计模式 之 单例模式。
第5个回答  2008-12-04
用单件模式

如何使MDI子窗体不重复被打开
有很多朋友希望MDI子窗体不重复被打开,如果子窗体已经被创建了,则把它激活,而不是又创建了一个MDI子窗体,其实中C#提供的MdiChildren这个属性就可以解决这个问题,下面假设一个treeview控件,点击treeview上面的相应结点,就会创建以这个结点命名的MDI子窗体,若是子窗体已经被创建,则把它激活,显示在所...

C#如何避免相同MDI子窗口重复打开
\/\/下面是打开子窗体 Form2 f2 = new Form2();f2.MdiParent = this;f2.Show();} } }

C#如何禁止重复显示同一个窗体
public static Form2 f2;\/\/声明窗体类静态变量 private void Button1_Click(object sender, EventArgs e){ if (f2 == null){ f2 = new Form2();\/\/将主窗体对象传递过去 f2.Show();\/\/显示窗体二 } else { f2.Activate();} } Form2子窗体:\/\/子窗体的关闭事件 private void Form2_For...

C#中防止点击同一按钮多次,弹出多个同一窗体办法?
也可以采用单例模式 关于单例模式可以在网上找 单例意思就是说一个类始终只能有一个对象存在 不提供共有的构造方法,而提供一个共有方法来返回一个该类对象 而这个共有的方法返回的始终都是同一个对象,所以就不存在多个窗体出现的现象

C#中关于子类窗口重复打开的问题
窗体有个属性AcceotButton你把它关联到,你的控件就可以了,关于窗体代开问题,你可以家判断,如果本窗体已经打开,则不能再次打开 foreach (Form. childrenForm. in this.MdiChildren){ \/\/检测是不是当前子窗体名称 if (childrenForm.Name == "子窗体名称"){ \/\/是的话就是把他显示 childrenForm....

我用c#建立一个mdi窗体,在其中显示一个子窗体。每次点按钮都显示一个...
1、将button1的Modifiers设置为Public 2、在该按钮的CLICK事件中加一句:button1.Enabled = false;3、子窗口的FormClosing事件这样编写:private void Form1_FormClosing(object sender, FormClosingEventArgs e){ Form2 f = (Form2)this.ParentForm;f.button1.Enabled = true;} ...

c# 主窗体关闭后,没有采用MDI窗体,任务管理器里没有关闭应用程序进程...
你如果机器里安装360卫士的话就好办多了- -直接去进淘宝或者拍拍或者银行的网站- -360自动查网购安全的时候就会提醒你- -关闭程序了,写错代码关闭不了程序的时候,此方法屡试不爽- -

在C#中 如何让MDI的子窗体不重复
foreach (Form froms in this.MdiChildren ){\/\/获取MID里的所有子窗体 if (froms is Form2){\/\/判断是否有Form2 froms.Focus();\/\/获得焦点 return;\/\/退出过程 } }\/\/没有Form2就Show 一个出来 Form2 f = new Form2();f.MdiParent = this;f.Show();

c# mdi窗体不重复跳转怎么写在方法中
f.Activate(); } } if (find == false) { T t = new T(); t.MdiParent = this; t.Show(); } } \/\/用法 private void button1_Click(object sender, EventArgs e) { Jump<ScoreUpdate>(); ...

c# 无法2次打开窗口
1:private static form1 instance = null;改: BT1的CLICK事件离 最好new一下 Form1 在调用 2:第一次调用 instance 时保存Form1对象;第二次调用 应该重新new一下;你调用的是第一次的对象 你关闭后资源施放。无法调用

相似回答