title: Singleton form: how to handle the case when form is "disposed"
body: <p>I want to implement a "Popup" information form, which should be shown at various occasions (like mouse over, context menu, etc), and which should automatically hide when the user changes the focus. </p>
  
  <p>I decided to do it with the SINGLETON pattern, like this:</p>
  
  <pre><code>public class frmCellInfo : Form
  {
      public static frmCellInfo instance; 
  
      public static frmCellInfo GetInstance()
      {
          if (instance == null)
              instance = new frmCellInfo();
          return instance;
      }
  
      private frmCellInfo() // PRIVATE, because of Singleton
      {
           InitializeComponent();
      }
  
      private void frmCellInfo_Deactivate(object sender, EventArgs e)
      {
          this.Hide();
      }
  
      // ......
  </code></pre>
  
  <p>The form is called like this:</p>
  
  <pre><code>frmCellInfo frm = frmCellInfo.GetInstance();
  frm.Show();
  </code></pre>
  
  <p>Basically, the automatic show/hide works like intended; however, when the user CLOSES the form by clicking the "X" icon, <strong>then the form goes, and next time, when I try to acces the form, I get the exception "Cannot access a disposed object"</strong></p>
  
  <p>So in way, the instance is still "there", but "disposed" (?)</p>
  
  <p><strong>Question:</strong> How should I rewrite the call of the form or the singleton pattern, so that in case the form is "disposed", I can create it again?</p>