System.Web.UI.Controls.ControlCollection.Add Throws ArgumentOutOfRangeException
<p>I'm trying to make a tabbed user interface using an asp:Panel and the asp:TreeView. I'm keeping both TreeViews initialized in the background and when I need to display one, I clear the panel and then add the appropriate TreeView.</p>

<p>I'm keeping the TreeView's stored in the Session variable so they don't go away when the page gets reloaded due to a postback.</p>

<p>But when I try to add the control, I get an ArgumentOutOfRangeException. Here's the small snippet of code that matters:</p>

<pre><code>&lt;asp:UpdatePanel UpdateMode="Conditional" runat="server"&gt;
  &lt;ContentTemplate&gt;
    &lt;asp:LinkButton ID="ContentButton" OnClick="ContentButton_Click" Text="Contents" runat="server" /&gt;
  &lt;/ContentTemplate&gt;
&lt;/asp:UpdatePanel&gt;

&lt;asp:UpdatePanel UpdateMode="Conditional" runat="server"&gt;
  &lt;Triggers&gt;
    &lt;asp:AsyncPostBackTrigger ControlID="ContentButton" /&gt;
  &lt;/Triggers&gt;
  &lt;ContentTemplate&gt;
    &lt;div id="TOCPanel" runat="server" /&gt;
  &lt;/ContentTemplate&gt;
&lt;/asp:UpdatePanel&gt;
</code></pre>

<p>Here's the related code in the C# file.</p>

<pre><code>protected void IndexButton_Click( object sender, EventArgs e )
{
    TOCPanel.Controls.Clear();
    // _TreeView points to a property that retrieves the TreeView from Session["TreeView"]
    TOCPanel.Controls.Add( _TreeView ); // This line fails
    // TOCPanel.Controls.Add( new TreeView() ); // This fails with the same error message too
}
</code></pre>

<p>Is there any reason</p>
