I ASP.NET används ett koncept som kallas för PostBack. En PostBack sker t.ex. när man klickar på en <asp:button runat=server /> och det som händer är att en POST Request skickas till samma URL som man är på.
I ASP.NET finns funktionalitet för persistens mellan Requests och en möjlighet för persistens är något som kallas för ViewState. När en PostBack sker läser ASP.NET-"motorn" in informationen från ViewState och jämför med de nya värdena som kommer från POST Requesten. På så vis får man persistens mellan requests i form av att t.ex. en <asp:DropDownList> "kommer ihåg" vilken item som var vald innan postback.
Det förutsätter att man har exakt en (1) <form runat=server> tag på sidan. Du behöver alltså inte ha ett till <form> någon annanstans, eftersom allt som har runat=server hanteras av PostBack-funktionaliteten (såvida man inte stänger av det för den kontrollen, vilket man kan).
Nu till din fråga:
Det enklaste sättet att använda UserControls på är att lägga in dem på WebFormet (.aspx) direkt:
<uc1:NewsList runat=server id=MyNewsList />
Om du inte vill att den ska synas förrän du klickar på en viss knapp, lägger du till Visible=False i taggen, så kommer den inte ens att renderas. Sen när du vill visa den sätter du helt enkelt MyNewsList.Visible = true; i din Button1_Click event handler.
Jag har fått för mig att du eventuellt laddar dina UserControls dynamiskt, dvs genom LoadControl(..). Det går ju också att göra, men det ställer högre krav på din förståelse för ASP.NETs livscykel. Det kan bli lite småjobbigt med vad som laddas när och vad som finns tillgängligt när och sånt.
Ta bort det formuläret du la till i din UserControl och testa igen.
Om du inte får det att funka, posta lite kod, så ska vi se vart det är fel någonstans.
::m