ASP: runat=server for dynamic control

In the Page_Load method I create a couple of controls, based on various conditions. I would like to register server side code with those controls. However, for the last part I need to declare my controls as server controls. This is normally done by runat=server, but I don’t know how to set this attribute in the C# code. myControl.Attributes.Add(“runat”, “server”) does not do the trick. This one works, meaning that the “test” method is called when I click on it: