title: WinForms: PictureBox initialization issue
body: <p>If I put PictureBox initialization into form's constructor or <code>form.Load</code> / <code>form.Shown</code> handler nothing is drawn on PictureBox. If initialization is being made just before drawing, graphics appears.</p>
  
  <p>Why this code draws an array on PictureBox:</p>
  
  <pre><code>public partial class Form1 : Form
  {
      Bitmap drawArea;
  
      public Form1()
      {
          InitializeComponent();
      }
  
      private void drawArray(int[] arr, PictureBox box)
      {
          //=========== Attention to this code ================
          drawArea = new Bitmap(pictureBox1.Size.Width, pictureBox1.Size.Height);
          pictureBox1.Image = drawArea;
          //===================================================
          using (Graphics g = Graphics.FromImage(drawArea))
          {
              Pen mypen = new Pen(Brushes.Black);
              g.Clear(Color.White);
              for (int i = 0; i &lt; arr.Length; i++)
                  g.DrawLine(mypen, i*2, drawArea.Height,
                     i*2, drawArea.Height - arr[i]);
          }
      }
  
      private void button1_Click(object sender, EventArgs e)
      {
          int[] ar1 = randomArray(20, 1, 20);
          drawArray(ar1, pictureBox1);
      }
  }
  </code></pre>
  
  <p>but this code doesn't?</p>
  
  <pre><code>public partial class Form1 : Form
  {
      Bitmap drawArea;
  
      public Form1()
      {
          InitializeComponent();
          //=========== Attention to this code ================
          //Breakpoint here: pictureBox1.Size.Width==409, pictureBox1.Size.Height==205
          drawArea = new Bitmap(pictureBox1.Size.Width, pictureBox1.Size.Height);
          pictureBox1.Image = drawArea;
          //===================================================
      }
  
      private void drawArray(int[] arr, PictureBox box)
      {
          using (Graphics g = Graphics.FromImage(drawArea))
          {
              Pen mypen = new Pen(Brushes.Black);
              g.Clear(Color.White);
              for (int i = 0; i &lt; arr.Length; i++)
                  g.DrawLine(mypen, i*2, drawArea.Height,
                    i*2, drawArea.Height - arr[i]);
          }
      }
  
      private void button1_Click(object sender, EventArgs e)
      {
          int[] ar1 = randomArray(20, 1, 20);
          drawArray(ar1, pictureBox1);
      }
  }
  </code></pre>
  
  <p>It does not even work if I make a second button and put the initialization code in its handler (and of course click second button before clicking the first).</p>
  
  <p>No exception is thrown.</p>