Tengo un formulario con un panel en el que cargo dinámicamente varios controles de usuario. Manejo eventos para cada uno de estos controles.Control de usuario cargado dinámicamente con controladores de eventos: cancelar el registro
UserControl userControl1 = LoadControl("control.ascx") as UserControl;
userControl1.Event += new ControlEventHandler(userControl_Event);
this.Panel.Controls.Add(userControl1);
UserControl userControl2 = LoadControl("control.ascx") as UserControl;
userControl2.Event += new ControlEventHandler(userControl_Event);
this.Panel.Controls.Add(userControl2);
...
Ahora, cuando me deshago de los controles en el panel, simplemente hago un
this.Panel.Controls.Clear();
hace la función Clear() cuidar de deshacerse de los eventos o debería estar haciendo
foreach(Control control in this.Panel.Controls)
{
UserControl userControl = control as UserControl;
if(userControl != null)
{
userControl -= userControl_Event;
}
}
antes de borrar() el contenido del panel?
Básicamente, estoy buscando una forma de cargar controles de usuario dinámicamente y manejar sus eventos sin crear una fuga cuando me deshago de ellos.
Gracias!
EDIT: Debido a que mis controles se crean en el caso Page_Init de la página (cada vez, a medida que se cargan dinámicamente), ¿es correcto decir que su esperanza de vida no puede ser más larga que la vida útil de la página? Según tengo entendido, el control no existe después de una publicación posterior. Se crea una nueva cada vez. Por lo tanto, no debería tener que anular el registro del evento porque el objeto ni siquiera existe en la carga de la página siguiente. ¿Es eso correcto?