怎么样判断一个窗体已经打开? 就是这样的我想在显示FORM2之前判断FORM2是否已经在显示了要是已经显示(就是已经在桌面上了)就不再显示FORM2反之显示! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 if (Form2!= Null){ Form2 myForm = new Form2();} 错了,是if(Form2 = Null){ Form2 myForm = new Form2();} 你可以做一个flagbool flag;在你得click事件中写if (!flag){ Form2 myform = new Form2(); flag = true;} 我前两天刚开始看C#,所以不一定对但简单的思路应该是这样的你试试设置一个Boolean类型的公共变量,在窗体打开的时候置True,关闭的时候置False然后就可以判断是不是打开了啊。 这样的话只有设标记了,重载它的构造和dispose函数 icedreamboy(REMING)的方法是最简单的!! if(frm!=null){ if(frm.IsDisposed) { frm.Dispose(); frm=new New(); frm.MdiParent=this; } frm.Show();}else{ frm=new New(); frm.MdiParent=this; frm.Show();}这个已经试过,有用的。 楼上:解释一下为什么要if(frm.IsDisposed) { frm.Dispose(); frm=new New(); frm.MdiParent=this; } http://www.zpcity.com/arli/doc/cs_4.htm private Form frm = null;private void button1_Click(object sender, System.EventArgs e) {if (frm == null || ! frm.Created) frm = new Form2(); frm.Show(); } 樓上的( yaoyaonet(绿洲) )的代碼行的嗎?frm.Created會提示沒有實例化的吧 if(myForm == null || myForm.IsDisposed) { Form2 myForm = new Form2();} 比如说判断frmIsOpen窗体是否打开,你可以在frmIsOpen先定义:public static frmIsOpen s_frmIsOpen; 然后在构造函数中写 s_frmIsOpen=this; 最后再在frmIsOpen_Close中写入s_frmIsOpen=null;如果,现在是在frmCheck窗体中检测是否打开,你可以写if(frmIsOpen.s_frmIsOpen==null){ MessageBox.Show("窗体没有打开");}else{ MessageBox.Show("窗体已经打开");}我在我现在已经作万的系统中就这么作的,肯定对 public void showMdiChild(System.Windows.Forms.Form MdiChildForm) { int i; Form[] frmForms = this.MdiChildren; bool btrue=false; Cursor.Current=Cursors.WaitCursor; for (i=0; i<frmForms.Length; i++) { //窗体类实例转换成字符串时相同,说明是同一个实例 if (frmForms[i].ToString()==MdiChildForm.ToString()) { MdiChildForm.Dispose(); //释放刚创建的子窗体的实例资源 this.MdiChildren[i].Activate(); //将已经创建的实例窗体激活 btrue=true; } } //如果i等于窗体数组的长度, //说明上面的循环完成后没有找到窗体实例与传过来的窗体实例相同, //说明新创建的窗体没有被创建过,那么就把它显示出来 if(btrue==false) { MdiChildForm.MdiParent = this; //指定窗体的MDI父窗体 MdiChildForm.Show(); if(MdiChildForm.MaximizeBox ==false) { MdiChildForm.WindowState = FormWindowState.Normal ; MdiChildForm.StartPosition =FormStartPosition.CenterScreen; } else MdiChildForm.WindowState = FormWindowState.Maximized ; } Cursor.Current =Cursors.Default ; } 干嘛要那么复杂,用句语句就搞定了呀if (!Page.IsPostBack )你的程序是window应用程序,还是WEB应用程序? 应该是window应用程序,cdbnzc(菜得不能再菜)的方法,出错,,还有没有其他好的方法判断,关注 public bool setTop(string strFormName) { for (int i=0;i<this.MdiChildren.Length ;i++) { if (this.MdiChildren[i].Name.Equals(strFormName)) { this.MdiChildren[i].Activate(); return true; } } return false; } private void menuItem4_Click(object sender, System.EventArgs e) { bool bln ; bln = false; bln =setTop("Child"); if (bln == false) { Child CForm = new Child(this); CForm.Show() ; } }setTop函数是用来判断窗口是否已经打开True 已打开 ,把那个窗口放到最前面Falee 没打开 DreamQWJ(慕容)的方法可用,我已经使用了,呵呵, 反射的几个疑问 求高手帮忙解决下这个问题!有关于设置c#窗体的快捷键的问题! 用c/s构架做一个兴趣调查表,现在要把兴趣爱好分类显示出来,暂时没找到好方法,大家帮我看看有什么好方法没? 如何编写带有程序运行参数的Windows Forms程序??? 怎样获取整个页面所有TextBox空件,并统一给它赋值(c#.net)。 csdn里有各个控件的用法介绍的那个链接在哪里? 关于DVD刻录的驱动问题! 如何不重复显示同一个嵌套的子窗口 我想做个商品管理系统! C#是解释性语言还是编译性语言? 一个有挑战的问题!——等你来回答! 高手怎么不来呀?。。。
{
Form2 myForm = new Form2();
}
{
Form2 myForm = new Form2();
}
bool flag;
在你得click事件中写
if (!flag)
{
Form2 myform = new Form2();
flag = true;
}
但简单的思路应该是这样的你试试设置一个Boolean类型的公共变量,
在窗体打开的时候置True,关闭的时候置False
然后就可以判断是不是打开了啊。
{
if(frm.IsDisposed)
{
frm.Dispose();
frm=new New();
frm.MdiParent=this;
}
frm.Show();
}
else
{
frm=new New();
frm.MdiParent=this;
frm.Show();
}这个已经试过,有用的。
解释一下为什么要if(frm.IsDisposed)
{
frm.Dispose();
frm=new New();
frm.MdiParent=this;
}
if (frm == null || ! frm.Created) frm = new Form2();
frm.Show();
}
frm.Created會提示沒有實例化的吧
{
Form2 myForm = new Form2();
}
如果,现在是在frmCheck窗体中检测是否打开,你可以写
if(frmIsOpen.s_frmIsOpen==null)
{
MessageBox.Show("窗体没有打开");
}
else
{
MessageBox.Show("窗体已经打开");
}我在我现在已经作万的系统中就这么作的,肯定对
{
int i;
Form[] frmForms = this.MdiChildren;
bool btrue=false;
Cursor.Current=Cursors.WaitCursor;
for (i=0; i<frmForms.Length; i++)
{
//窗体类实例转换成字符串时相同,说明是同一个实例
if (frmForms[i].ToString()==MdiChildForm.ToString())
{
MdiChildForm.Dispose(); //释放刚创建的子窗体的实例资源
this.MdiChildren[i].Activate(); //将已经创建的实例窗体激活
btrue=true;
}
}
//如果i等于窗体数组的长度,
//说明上面的循环完成后没有找到窗体实例与传过来的窗体实例相同,
//说明新创建的窗体没有被创建过,那么就把它显示出来
if(btrue==false)
{
MdiChildForm.MdiParent = this; //指定窗体的MDI父窗体
MdiChildForm.Show();
if(MdiChildForm.MaximizeBox ==false)
{
MdiChildForm.WindowState = FormWindowState.Normal ;
MdiChildForm.StartPosition =FormStartPosition.CenterScreen;
}
else
MdiChildForm.WindowState = FormWindowState.Maximized ;
}
Cursor.Current =Cursors.Default ;
}
if (!Page.IsPostBack )
你的程序是window应用程序,还是WEB应用程序?
for (int i=0;i<this.MdiChildren.Length ;i++) {
if (this.MdiChildren[i].Name.Equals(strFormName)) {
this.MdiChildren[i].Activate();
return true;
}
}
return false;
}
private void menuItem4_Click(object sender, System.EventArgs e)
{
bool bln ;
bln = false;
bln =setTop("Child");
if (bln == false) {
Child CForm = new Child(this);
CForm.Show() ;
}
}
setTop函数是用来判断窗口是否已经打开
True 已打开 ,把那个窗口放到最前面
Falee 没打开