c# 如何防止form重复加载?
在某个函数中 
 public   ShowForm() 
 { 
 Form1   frm   =   new   Form1(); 
 frm.Show(); 
 }   
 frm是局部变量,不好进行null判断,能否在Form1内部判断,防止Show出两个相同的窗体?
------解决方案--------------------Application.OpenForms属性可以帮助你解决这个问题。
------解决方案--------------------bool a = false; 
             foreach (Form abc in Application.OpenForms) 
             { 
                 if (abc.Name ==  "Form2 ") 
                 { 
                     a = true; 
                     break; 
                 } 
             } 
             if (!a) 
             { 
                 Form2 frm = new Form2(); 
                 frm.Show(); 
             }
------解决方案--------------------其实这个问题,就是经典的23种设计模式中的单件模式(singleton),下面用c#实现之:    
 首先我们有2个windows form,主窗体叫form1,子窗体叫childform。在主窗体中加入一menu,用来实例化子窗体,我们在form1.cs中写入下代码:    
 private static childform childform; //静态变量,保存唯一实例    
 private void menuitem2_click(object sender, system.eventargs e)  
 {  
 childform childform = getchildform(); //获取子窗体对象  
 childform.show(); //显示之  
 }    
 private childform getchildform()  
 {  
 //先后次序不能错,前一个条件用来判断是否是第一次,后一个条件用来判断子窗体是否被关闭了  
 if( childform == null || childform.isdisposed )  
 { //第一次实例化也好,被关了也好,都重新实例化  
 childform = new childform();  
 childform.mdiparent = this;  
 }    
 return childform;  
 }