C#中怎样检测某一窗体是否已经打开,如打开再不打开了 C#中一个window上有一个button中,button中的代码如下,Form2 f2=new Form2();f2.show();如f2已经打开,则不再打开f2。请问代码怎样写? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 bool IsOpened = false;打开前检测这个bool值,true就不再开了 Form2添加一个静态变量来判断 最好的方法是使用单件模式.将Form2的构造函数声明为private然后设一个全局Form2具体实现,楼主请参照单件模式讲解 有误,不是全局Form2,是静态Form2.使用bool值的方法,如果说缺点的话,就是降低可读性.另外如果代码写得不好的话,还容易出现对bool的意外修改. Form2 form1 = null;private void button3_Click(object sender, EventArgs e){if (form1 == null || form1.IsDisposed){form1 = new Form2();form1.Show();form1.menutest = false;}else{form1.BringToFront();form1.menutest = false;}} 去掉form1.menutest = false; public static hastable tabForm=new hastable;在窗体show前添加到哈哈希表,窗体关闭的时候remove掉就可以了 Form2 f2=new Form2();f2.showdialog(); 能否用“单件模式”给个实例Tks! public static Form2 f2 = null; private Form2() { InitializeComponent(); } public Form2 GetInstance() { if (f2 == null) { f2 = new Form2(); } return f2; } //也可以写成属性形式 public Form2 form2 { get { if (f2 == null) { f2 = new Form2(); } return f2; } } 上面方法和属性前面少了个static private bool isShow(Form fs) { foreach (Form f in this.MdiChildren) { if (f.GetType().FullName==fs.GetType().FullName) return false; } return true; } foreach (Form frm in Application.OpenForms) { if (frm is Form3) { frm.Focus(); return; } } Form3 f2 = new Form3(); f2.Show(); public class Form2:.......{ private static Form2 intance = null; public static Form2 GetIntance() { lock(typeof(Form2)) { if(intance == null) { intance = new Form2(); } return intance; } } private Form2(){....}} if (Form2.ActiveForm == null){ Form2 f2=new Form2(); f2.show();}else{ Form2 f2 = Form2.ActiveForm as Form2; f2.show();} 请教各位高手,这个问题能解决吗?http://community.csdn.net/Expert/topic/5397/5397555.xml?temp=.3033563 C# 中static void Main(string[] args)参数用法 怎么删除或更新IE临时文件? winform中的DataGridView,我怎么在一个单元格中添加一个或多个我想要的控件? 为什么用了with rollup,有的列进行合计,有的不进行合计啊 替换节点的值 寻找.net平台全文搜索技术 请问怎样在一个程序里启动另外一个程序? 请教——如何将字符串“0800”转为MSSQL2K中的一个时间字段“08:00”,谢谢!!!! 添加Windows服务几个问题? 请教各位,excel+VB c# 如何调用resx文件里面的资源 如何在基类中实现静态虚函数
使用bool值的方法,如果说缺点的话,就是降低可读性.另外如果代码写得不好的话,还容易出现对bool的意外修改.
private void button3_Click(object sender, EventArgs e)
{
if (form1 == null || form1.IsDisposed)
{
form1 = new Form2();
form1.Show();
form1.menutest = false;
}
else
{
form1.BringToFront();
form1.menutest = false;
}
}
f2.showdialog();
{
InitializeComponent();
} public Form2 GetInstance()
{
if (f2 == null)
{
f2 = new Form2();
}
return f2;
} //也可以写成属性形式
public Form2 form2
{
get
{
if (f2 == null)
{
f2 = new Form2();
}
return f2;
}
}
{
foreach (Form f in this.MdiChildren)
{
if (f.GetType().FullName==fs.GetType().FullName)
return false;
}
return true;
}
{
if (frm is Form3)
{
frm.Focus();
return;
}
}
Form3 f2 = new Form3();
f2.Show();
{
private static Form2 intance = null;
public static Form2 GetIntance()
{
lock(typeof(Form2))
{
if(intance == null)
{
intance = new Form2();
}
return intance;
}
}
private Form2(){....}
}
{
Form2 f2=new Form2();
f2.show();
}
else
{
Form2 f2 = Form2.ActiveForm as Form2;
f2.show();
}