title: Show vs ShowDialog issues with both
body: <p>I have been writing a little application where Form1 opens, checks that a config file is present and correct, and then hides in the Task Bar until an API call is received.</p>
  
  <p>When this happens I would like a new Form to open in the bottom right corner and show various details, but am having some issues. When I use ShowDialog to open the form the form doesn't always honor the TopMost to try and get the form to appear on top of <em>all other windows</em>, however if I use Show instead, this honors the TopMost, but the form style is <em>messed up</em> as can be seen below.</p>
  
  <p>The standard form looks like:</p>
  
  <pre><code>Caller Number: XXXXXXXX
  Caller Name:   XXXXXXXX
                 XXXXXXXX
  </code></pre>
  
  <p><strong>Code Examples</strong></p>
  
  <pre><code>Form2 form2 = new Form2();
  form2.TopMost = true;
  form2.TopLevel = true;
  form2.ShowDialog();
  </code></pre>
  
  <p>Above: Doesn't always open on-top of everything</p>
  
  <pre><code>Form2 form2 = new Form2();
  form2.TopMost = true;
  form2.TopLevel = true;
  form2.Show();
  </code></pre>
  
  <p>My Current code is:</p>
  
  <pre><code>private void checkCalls(object source, System.Timers.ElapsedEventArgs e)
  {
      var client = new RestClient("http://apiurl.com");
      client.Authenticator = new HttpBasicAuthenticator(api_username, api_password);
  
      var request = new RestRequest("/", Method.GET);
  
      // async with deserialization
      var asyncHandle = client.ExecuteAsync&lt;Call&gt;(request, response =&gt;
      {
          if (response.Data == null)
          {
              if (incoming_call == true &amp;&amp; notify_type == "Pop-Up")
              {
                  if (caller.InvokeRequired)
                  {
                      caller.Invoke(new EventHandler(delegate {
                          Console.WriteLine("Hidden via Invoke");
                          caller.Hide();
                      }));
                  }
                  else
                  {
                      Console.WriteLine("Hidden without Invoke");
                      caller.Hide();
                  }
              }
              incoming_call = false;
          }
          else if(incoming_call == false)
          {
              incoming_call = true;
              if (notify_type == "Pop-Up")
              {
                  //Console.WriteLine("Openning Window");
                  if (caller.InvokeRequired)
                  {
                      caller.Invoke(new EventHandler(delegate
                      {
                          Console.WriteLine("Opening Window via Invoke");
                          caller.Show();
                          caller.TopMost = true;
                          caller.TopLevel = true;
                      }));
                  }
                  else
                  {
                      Console.WriteLine("Opening Window");
                      caller.Show();
                      caller.TopMost = true;
                      caller.TopLevel = true;
                  }
              }
          }
      });
  }
  </code></pre>
  
  <p>And some Logs:</p>
  
  <pre>
  Opening Window
  Hidden without Invoke
  Opening Window
  Hidden without Invoke
  </pre>
  
  <p>Above, opens like (hard to see, but the Text Boxes should be greyed out as Disabled and Readonly, and there is black text next to each Text Field which is now invisible, but has a white background):</p>
  
  <p><a href="http://img546.imageshack.us/img546/5517/screenshot20120708at222.png" rel="nofollow noreferrer" title="screenshot">screenshot http://img546.imageshack.us/img546/5517/screenshot20120708at222.png</a></p>
  
  <p>Thanks in advance!</p>