请问大家怎么限制只打开一个form窗口???

kxtm01 2008-12-23 01:36:34
请问大家怎么限制只打开一个form窗口???




private void button2_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
}



这样点击按钮一次就打开一次FORM2窗体,有什么方法可以限制只能打开一个form2窗体,除非打开的form2窗体关闭后才能再次打开???
不然的话按钮只点只弹出~~~
...全文
728 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
漠北兄弟 2011-10-13
  • 打赏
  • 举报
回复
7楼 正解,本人已测试,谢谢。
6大少 2009-11-19
  • 打赏
  • 举报
回复
解决了 7楼 解决的
chenwei175528 2009-03-06
  • 打赏
  • 举报
回复
mark and up and study
yqlx521 2008-12-24
  • 打赏
  • 举报
回复
设置form1为主窗体,在form1里面实例form2调用
guoke1 2008-12-24
  • 打赏
  • 举报
回复
up
gsmlove 2008-12-24
  • 打赏
  • 举报
回复
mark
guxingdao 2008-12-24
  • 打赏
  • 举报
回复
请查阅“懒汉式”和“饿汉式”
byte377 2008-12-24
  • 打赏
  • 举报
回复
判断新form对象已经存在了 就不要show了
if(form == null)
{
form = new Form();
form.Show();
}
rqx110 2008-12-24
  • 打赏
  • 举报
回复
在Form2中

C# code
private static Form2 instance = null;
public static Form2 Instance
{
get{ return instance;}
}

public Form2()
{
instance = this;
}




在Form1中调用

[C# code]
if(Form2.Instance == null || Form2.Instance.IsDisposed)
{
Form2 frm = new Form2();
Form2.Instance.show();
}
else
{
Form2.Instance.Activate();
}



这类问题已经先前有帖子了 麻烦以后lz多搜索下先
lmm6693065 2008-12-24
  • 打赏
  • 举报
回复

// 是否已经打开了?(用循环来判断)
foreach (Form childrenForm in this.MdiChildren)
{
//检测是不是当前子窗体名称
if (childrenForm.Name == "子窗体名称")
{
//是的话就是把他显示
childrenForm.Visible = true;
//并激活该窗体
childrenForm.Activate();
return;
}
}
//下面是打开子窗体
CardAdmin myCardAdmin = new CardAdmin();
myCardAdmin.MdiParent = this;
myCardAdmin.Show();
myCardAdmin.WindowState = FormWindowState.Maximized;

Sugar_Tiger 2008-12-24
  • 打赏
  • 举报
回复
我在这里以父子窗口为例,在主窗口的button事件中如下:
private void mnLogManage_Click(object sender, EventArgs e) //buttonClick事件
{
if (ActiveMdiChild is LogManage) //如果当前Form已经是LogManage[LogManage为类名,即需要弹出的form名]
{
return; //刚不作任何处理。
}
else //如果当前窗口不是LogManage窗口
{
if (this.ActiveMdiChild != null) //若当前有活动窗口
{
this.ActiveMdiChild.Close(); //关闭所有当前活动窗口
}
LogManage lm = new LogManage(); //在主窗口中打开需要打开的:LogManage窗体
lm.MdiParent = this;
lm.Show();
}
}
tommir3 2008-12-23
  • 打赏
  • 举报
回复
用个全局变量Form form

代码里写
if(form == null)
{
form = new Form();
form.Show();
}
else
{
MessageBox("窗体已存在");
}
txws1119 2008-12-23
  • 打赏
  • 举报
回复
FORM2 fm=new Form2();
fm.ShowDialog();

我只是补充一下。这只能操作一个窗口。
lilei8396 2008-12-23
  • 打赏
  • 举报
回复
如果是从FORM1窗口跳转到FORM2,那就是上边那个仁兄的说法:
FORM2 fm=new Form2();
fm.show();
this.hide();
如果你是把FORM1当成父窗体,要在FORM1中
Form fm=new Form2();
fm.MDIParent=this;
fm.show();
lchh0917 2008-12-23
  • 打赏
  • 举报
回复
单件模式



public partial class Form1 : Form
{
private void button1_Click(object sender, EventArgs e)
{
Form2.ShowChildForm();
}
}





public partial class Form2 : Form
{
private static Form2 formInstance;

public static Form2 Instance
{
get
{
if(formInstance == null)
{
formInstance = new Form2();
}
return formInstance;
}

}

public static void ShowChildForm()
{
if(!Instance.Visible)
{
Instance.Show();
}
}
}

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧