In several earlier post on adding controls at runtime and the potential impact on the viewstate I could have created some confusion. You can add controls at runtime but these controls will not become part of the viewstate of their parent control (the page itself is also a control). If you want to persist the new control over roundtrips you have to add the control again and again on every roundtrip. The viewstate is used to store all those properties which pop up in the property window.
Instead of adding a control again and again I personally prefer to add the control at design time and set its visible property to false. When the control is needed it will become available by setting the property programmtically. An even nicer way is to bind the visible property to a custom expression, like the name of a (protected) method on the page.