怎么样判断一个窗体已经打开?

qm0445 2003-10-20 02:26:45
怎么样判断一个窗体已经打开?就是比如我有个FORM2如果我有个CHICK事件是NEW FORM2我要怎么在CHICK中判断FORM2是不 是已经显示了要是不话就不重复事例化!要是没有者事例化显示FORM2!
...全文
67 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
liqiang010 2003-10-24
  • 打赏
  • 举报
回复
DreamQWJ(慕容)的方法可用,我已经使用了,呵呵,
Hexudong1979 2003-10-24
  • 打赏
  • 举报
回复
版主说的,有可能不是多文档窗体,那,不就用不着了吗?
试试我那个,保证对的
DreamQWJ 2003-10-24
  • 打赏
  • 举报
回复
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 没打开
liqiang010 2003-10-24
  • 打赏
  • 举报
回复
应该是window应用程序,cdbnzc(菜得不能再菜)的方法,出错,,还有没有其他好的方法判断,关注
xiangyangsunboy1 2003-10-23
  • 打赏
  • 举报
回复
干嘛要那么复杂,用句语句就搞定了呀
if (!Page.IsPostBack )
你的程序是window应用程序,还是WEB应用程序?
wangj2001 2003-10-23
  • 打赏
  • 举报
回复
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 ;
}
Hexudong1979 2003-10-23
  • 打赏
  • 举报
回复
比如说判断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("窗体已经打开");
}

我在我现在已经作万的系统中就这么作的,肯定对
fannyfang79 2003-10-23
  • 打赏
  • 举报
回复
if(myForm == null || myForm.IsDisposed)
{
Form2 myForm = new Form2();
}
running_su 2003-10-23
  • 打赏
  • 举报
回复
樓上的( yaoyaonet(绿洲) )的代碼行的嗎?
frm.Created會提示沒有實例化的吧
大户翁 2003-10-20
  • 打赏
  • 举报
回复
private Form frm = null;

private void button1_Click(object sender, System.EventArgs e) {
if (frm == null || ! frm.Created) frm = new Form2();
frm.Show();
}
ArLi2003 2003-10-20
  • 打赏
  • 举报
回复
http://www.zpcity.com/arli/doc/cs_4.htm
HNU 2003-10-20
  • 打赏
  • 举报
回复
楼上:
解释一下为什么要

if(frm.IsDisposed)
{
frm.Dispose();
frm=new New();
frm.MdiParent=this;
}
zhongwanli 2003-10-20
  • 打赏
  • 举报
回复
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();
}

这个已经试过,有用的。
laofei2000 2003-10-20
  • 打赏
  • 举报
回复
icedreamboy(REMING)的方法是最简单的!!
PlayIrrrr 2003-10-20
  • 打赏
  • 举报
回复
这样的话只有设标记了,重载它的构造和dispose函数
icedreamboy 2003-10-20
  • 打赏
  • 举报
回复
我前两天刚开始看C#,所以不一定对。。。
但简单的思路应该是这样的。。。

你试试设置一个Boolean类型的公共变量,
在窗体打开的时候置True,关闭的时候置False
然后就可以判断是不是打开了啊。
cdbnzc 2003-10-20
  • 打赏
  • 举报
回复
你可以做一个flag
bool flag;
在你得click事件中写
if (!flag)
{
Form2 myform = new Form2();
flag = true;
}
cdbnzc 2003-10-20
  • 打赏
  • 举报
回复
错了,是if(Form2 = Null)
{
Form2 myForm = new Form2();
}
cdbnzc 2003-10-20
  • 打赏
  • 举报
回复
if (Form2!= Null)
{
Form2 myForm = new Form2();
}
qm0445 2003-10-20
  • 打赏
  • 举报
回复
就是这样的我想在显示FORM2之前判断FORM2是否已经在显示了要是已经显示(就是已经在桌面上了)就不再显示FORM2反之显示!
加载更多回复(4)

110,499

社区成员

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

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

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