title: Panel.FindControl() method isn't finding a control that has been added to it
body: <p>Consider the following code, adding 2 textboxes with the same ID (oops):</p>
  
  <pre><code>protected void Page_Load(object sender, EventArgs e)
  {
     string TextBoxName = "TextBox1";
  
     Panel p = new Panel();
  
     TextBox t = new TextBox();
     t.ID = TextBoxName;
     p.Controls.Add(t);
  
     if (p.FindControl(TextBoxName) == null) // &lt;-------*******
     {
         TextBox t2 = new TextBox();
         t2.ID = TextBoxName;
         p.Controls.Add(t2);
     }
  
     Page.Form.Controls.Add(p);
  }
  </code></pre>
  
  <p>The code is designed to stop adding the same ID twice. However, the <code>Panel.FindControl()</code> method is not finding a control that was added in the previous line of code.</p>
  
  <p>Am I using this in the wrong way? </p>
  
  <p>I mean - <em>sure</em> - I could manually iterate through the controls in the next level, like:</p>
  
  <pre><code>string TextBoxName = "TextBox1";
  
  Panel p = new Panel();
  
  TextBox t = new TextBox(); 
  t.ID = TextBoxName;
  p.Controls.Add(t); 
  
  TextBox t2 = new TextBox();  
  t2.ID = TextBoxName;   
  
  bool duplicateFound = false;
  
  foreach( Control c in p.Controls ) 
  {   
      if(c.ID == TextBoxName)    
      {
         duplicateFound = true;
         break;    
      } 
  }
  
  if( duplicateFound ) 
  {
      t2.ID = TextBoxName + "__0";
      p.Controls.Add(t2); 
  }
  </code></pre>
  
  <p>But I don't understand why this isn't working, whereas <code>Placeholder</code> controls and <code>UserControl</code>s work fine. </p>
  
  <p>The reason I am using <code>Panel</code>s is for CSS styling. body > div > input - but still - it isn't working.</p>