title: Best practices for multi-form applications to show and hide forms?
body: <p>There are tons of questions on StackOverflow asking how to hide Form1 and show Form2. And, usually, a few different answers crop up:</p>
  
  <p>1)</p>
  
  <pre><code>// Program.cs
  Application.Run(new Form1());
  // Form1.cs
  Form2 form2 = new Form2();
  form2.Show();
  this.Hide();
  </code></pre>
  
  <p>2) </p>
  
  <pre><code>// Program.cs
  Form1 form1 = new Form1();
  Form2 form2 = new Form2();
  form1.Show();
  form2.Show();
  Application.Run();
  </code></pre>
  
  <p><code>...etc..</code></p>
  
  <p>I'm not looking for a simple disposable solution like #1. I'm looking for best form management practices. An application with 5-8 forms, opening and closing one another frequently - what's the best way to manage these forms?</p>
  
  <p>My idea was to make each form a (lazy?) Singleton and bury them in a <code>FormsManager</code> class of some sort (like solution #2 but ++). And then individual forms might call something like <code>FormsManager.GetForm&lt;WelcomeDialog&gt;()</code>.</p>
  
  <p>But I was wondering what people with more experience used. Again, these solutions shouldn't be quick hacks. They should be <strong>design-oriented</strong>, maybe <strong>architectural</strong>, and <strong>long-term solutions</strong>.</p>
  
  <p><strong>Edits:</strong></p>
  
  <p>This is a pretty generic question (so the requirements are pretty open) for anybody who might have the same trouble. Specific to my situation though, I don't need multiple forms shown at startup. Also, I have no MDI forms. I may have a few modal forms, but they are mostly non-modal.</p>