Вот полное решение. Разметка ...
<%@ Reference Control="~/MyUserControl.ascx" %>
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="asp" %>
<asp:TabContainer ID="TabContainer1" runat="server" AutoPostBack="true">
<asp:TabPanel id="Tab1" runat="server">
<HeaderTemplate>
Tab1
</HeaderTemplate>
<ContentTemplate>
Tab 1 static content
</ContentTemplate>
</asp:TabPanel>
<asp:TabPanel id="Tab2" runat="server">
<HeaderTemplate>
Tab2
</HeaderTemplate>
<ContentTemplate>
<!-- user control will be loaded here -->
</ContentTemplate>
</asp:TabPanel>
</asp:TabContainer>
... и код:
Protected Sub TabContainer1_ActiveTabChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabContainer1.ActiveTabChanged
If TabContainer1.ActiveTabIndex = 1 Then
Dim uc As MyUserControl = CType(LoadControl("MyUserControl.ascx"), MyUserControl)
Tab2.Controls.Add(uc)
End If
End Sub