title: How to have a user navigate multiple "screens" within one form/window?
body: <p>I am working on a project that simulates a company's program for performing various functions within a GUI (using C# on VS2010). Currently there are about 10 or so different forms, one for each function (serving as a menu, filling out assorted forms, management of said forms, ect). So far we've been using things along the line of:</p>
  
  <pre><code>Form1 myForm1 = new Form1();
  myForm1.Show();
  </code></pre>
  
  <p>to open new screens and</p>
  
  <pre><code>this.Hide();
  </code></pre>
  
  <p>when finished with the currently active form. (<code>this.Close()</code> just seems to close the entire program)</p>
  
  <p>This causes some issues in that the process has an issue of continuing to run after the X at the top right of the form is clicked (I think that this is due to hidden forms not being closed properly). I also suspect that if a user uses in-program navigation without killing the process long enough, the constant generation and hiding of forms will end up hogging up all the memory.</p>
  
  <p>In the wild, I rarely see programs that rely on opening new windows/forms constantly to enable user navigation. Programs, such as an installer, typically use an event of some sort to cause the current displayed content to disappear and new content to appear without changing to a new form/window. How can I go about doing this? Is it a matter of having buttons/textboxes/labels all stacked on each other in the one screen, but hidden or is there something more intuitive that I am missing?</p>