title: Setting WindowState to Maximized causes window to appear too early
body: <p>I read that the <code>Load</code> event is supposed to be fired after the window handle has been created, but <em>before</em> the window actually become visible. For the most part, this seems to be true. However, I've found that when I create a form with the <code>WindowState</code> property set to <code>FormWindowState.Maximized</code> (either via the VS designer, or programatically in the constructor), the window becomes visible prior to the <code>Load</code> event firing. For example:</p>
  
  <pre><code>using System;
  using System.Windows.Forms;
  
  namespace MyApplication
  {
      public partial class MyForm : Form
      {
          public MyForm()
          {
              InitializeComponent();
              WindowState = FormWindowState.Maximized;
          }
  
          protected override void OnLoad(EventArgs e)
          {
              MessageBox.Show("OnLoad - notice that the window is already visible"); 
              base.OnLoad(e);
          }
      }
  }
  </code></pre>
  
  <p>This in turn causes the displayed form to flicker a lot while its controls (which are laid out during the <code>Form.Load</code> event) are resized while the window is visible. If I did not set the state to be maximized, then all the resizing is done before the window is shown (which is what I would have expected).</p>
  
  <p>I could hold off on setting the <code>WindowState</code> until the end of the <code>Load</code> event, but that still causes a lot of flickering because the window becomes visible and then all of the controls resize.</p>
  
  <p>Any thoughts?</p>