如何判断当前窗体是否打开,如果已经打开就不要重复打开

时间:2022-08-02 18:57:09
在我的主窗体下我定时去查看另一个窗体(form2)的数据是否有变化,如果有变化就将form2窗体的新数据弹出来,把之前弹出的form2窗体关闭。如何实现?也就是每次只显示当前新窗体

11 个解决方案

#1


定义一个bool型的变量bool a = true;        private void button1_Click(object sender, EventArgs e)        {            if (a)            {                Frm_Child frm = new Frm_Child();         frm.MdiParent = this;         frm.Show();                a = false;            }         }

#2


http://wenwen.soso.com/z/q209995468.htm

#3


放一个的List,打开就Add进去

#4


private Form frm;
private void button1_Click(object sender, EventArgs e) 
{  
         if(frm!=null && !frm.IsDisposed)
         {
             frm.Close();
         }
         frm=new From()
         frm.Show();
 }

#5


Application.OpenedForms集合
foreach (var item in Application.OpenedForms)
{
    if (item is Form1) ...
}

#6


引用 5 楼 caozhy 的回复:
Application.OpenedForms集合
foreach (var item in Application.OpenedForms)
{
    if (item is Form1) ...
}

正解

#7


只用一个变量去管理Form2,不要在另外地方new就行了。

#8


在OpenedForms 中去找吧,

#9


是这样的话,那就不要去关闭Form2了。在首次运行时 将Form2的窗口设为最小化。
当数据发生变化的时候,在将Form2的窗口最大化或者正常显示

#10


引用 5 楼 caozhy 的回复:
Application.OpenedForms集合
foreach (var item in Application.OpenedForms)
{
    if (item is Form1) ...
}


正解。

#11


是不是就是单例模式,方法有很多。百度一下吧

#1


定义一个bool型的变量bool a = true;        private void button1_Click(object sender, EventArgs e)        {            if (a)            {                Frm_Child frm = new Frm_Child();         frm.MdiParent = this;         frm.Show();                a = false;            }         }

#2


http://wenwen.soso.com/z/q209995468.htm

#3


放一个的List,打开就Add进去

#4


private Form frm;
private void button1_Click(object sender, EventArgs e) 
{  
         if(frm!=null && !frm.IsDisposed)
         {
             frm.Close();
         }
         frm=new From()
         frm.Show();
 }

#5


Application.OpenedForms集合
foreach (var item in Application.OpenedForms)
{
    if (item is Form1) ...
}

#6


引用 5 楼 caozhy 的回复:
Application.OpenedForms集合
foreach (var item in Application.OpenedForms)
{
    if (item is Form1) ...
}

正解

#7


只用一个变量去管理Form2,不要在另外地方new就行了。

#8


在OpenedForms 中去找吧,

#9


是这样的话,那就不要去关闭Form2了。在首次运行时 将Form2的窗口设为最小化。
当数据发生变化的时候,在将Form2的窗口最大化或者正常显示

#10


引用 5 楼 caozhy 的回复:
Application.OpenedForms集合
foreach (var item in Application.OpenedForms)
{
    if (item is Form1) ...
}


正解。

#11


是不是就是单例模式,方法有很多。百度一下吧