c# Winform 防止重复打开同一窗体

 

方式一,

复制代码
 foreach (Form frm in Application.OpenForms)
 {
    if (frm is form1)
    {
       form1.Activate();
       form1.WindowState = FormWindowState.Normal;
       return;
     }
 }
 Form1 form1 = new Form1();
 form1.Show();
复制代码

 

方式二,

复制代码
Form1 F1 ;
 
if(F1 == null || F1.IsDisposed)
{
   F1 = new Form1();
   F1.Show();//未打开,直接打开。
}
else
{
   F1.Activate();//已打开,获得焦点,置顶。
}
复制代码

 

方式三,

复制代码
public class GenericSingleton<T> where T : Form, new()
        {
            private static T t = null;
            public static T CreateInstrance()
            {
                if (t == null || t.IsDisposed)
                {
                    t = new T();
                }
                else
                {
                    t.Activate(); //如果已经打开过就让其获得焦点  
                    t.WindowState = FormWindowState.Normal;//使Form恢复正常窗体大小
                }
                return t;
            }
        } 
复制代码
Form2 form2 = GenericSingleton<Form2>.CreateInstrance();
form2.Show();

 

posted @   qingjiawen  阅读(458)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示