如何保证一个Form窗体的唯一啊
比如实例一个窗体,并打开它,代码如下   : 
 Form1   myF=new   Form1(); 
 myF.Show();   
 它被放在一个按键的事件中。当点击这个按键后就打开这个窗体。   
 如何保证当窗体被打开后,再点击按键后不再打开新的这个窗体,并且已经打开的窗体会成为焦点窗体。
------解决方案--------------------把myF放到一个全局变量里,每次Show之前先检查这个变量是否为空,是则new一个新窗体,否则直接Show!
------解决方案--------------------Form1 myF=new Form1(); 
 放到外面 
 在里面,你判断是否实例化。并写手写关闭事件 
------解决方案--------------------public class JC_BM_Info : Form 
     { 
         private static JC_BM_Info _instance = null; 
 private JC_BM_Info() 
         { 
             InitializeComponent(); 
             BeforeShow(); 
         } 
         public static JC_BM_Info Instance 
         { 
             get 
             { 
                 if (_instance == null) 
                 { 
                     _instance = new JC_BM_Info(); 
                 } 
                 return _instance; 
             } 
         } 
 ^^^^^^^^^^^^^^^^^^^^^^^^^ 
 }   
 调用的时候:   
 JC_BM_Info frm = JC_BM_Info.Instance; 
             frm.Show(); 
             frm.Activate(); 
------解决方案--------------------try   
 Form2 f2 = null; 
 private void button1_Click(object sender, EventArgs e) 
 { 
     if (f2 == null || f2.IsDisposed) 
     { 
         f2 = new Form2(); 
         f2.Show(); 
     } 
     else 
     { 
         f2.Activate(); 
     }     
 }
------解决方案--------------------vb中我是这么做的:   
 Public Class Form2   
     Public Shared IsShow As Boolean = False 
     Public Shared mForm As Form   
     Public Sub New()   
          ' 此调用是 Windows 窗体设计器所必需的。 
         InitializeComponent()   
          ' 在 InitializeComponent() 调用之后添加任何初始化。   
         If IsShow Then 
             mForm.Focus() 
             Throw New Exception( "IsShow = True ") 
         Else 
             IsShow = True 
             mForm = Me 
         End If 
     End Sub   
     Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing 
         IsShow = False 
         mForm.Dispose() 
     End Sub 
 End Class     
 调用的时候: 
 Public Class Form1   
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
         Try 
             Dim frm As New Form2 
             frm.Show() 
         Catch ex As Exception 
              'MsgBox(ex.Message) 
         End Try 
     End Sub 
 End Class
------解决方案--------------------private void button1_Click(object sender, EventArgs e) 
         { 
             if (frmTwo==null||frmTwo.IsDisposed) 
             { 
                 frmTwo = new Form(); 
                 frmTwo.Text =  "新窗体 "; 
                 frmTwo.Show(); 
             } 
             else 
             { 
                 frmTwo.Activate(); 
             } 
         } 
 这种方法可行