Como han dicho otros, no debería haber ninguna lógica complicada en el constructor del control de usuario.
En teoría, el lugar para realizar inicializaciones complicadas debe ser el controlador de eventos Load o OnLoad(). Sin embargo, en VS2010, usar el evento Load del control (o OnLoad()) no es suficiente.
Si el control de usuario está residiendo en el mismo conjunto que la forma que lo está utilizando, y que desea ver el formulario en el diseñador, VS2010 no sólo ejecutar el constructor del control de usuario, sino también su onLoad() o Evento de carga Esto no parece suceder siempre, pero cuando el Diseñador necesita reconstruir el formulario.
Así que si tiene alguna lógica complicada allí o utiliza recursos externos, como una base de datos, puede arrojar este error al abrir el Diseñador para el formulario adjunto. Esto es malo porque usar el evento Load debería ser el lugar correcto para hacerlo.
Es posible que tenga que usar la inicialización diferida para cualquier recurso vital que tenga que inicializar antes de ejecutar el formulario.
ej .:
public class MyUserControl: UserControl
{
...
private List<MyObject> myObjects = null;
private List<MyObject> MyObjects
{
get
{
if (myObjects == null)
{
// lazy initialisation here
using (var dbContext = new MyVerySpecialDatabaseContext())
{
myObjects = dbContext.MyObjects.ToList();
}
}
return myObjects;
}
}
public MyUserControl()
{
InitializeComponent();
this.Load += new System.EventHandler(this.MyUserControl_Load);
... // more UI initialization, but no complicated logic here
}
private void MyUserControl_Load(object sender, EventArgs e)
{
this.myDataBindingSource.DataSource = MyObjects;
}
}
Muéstranos el código y señala la línea en la que aparece el mensaje de error. –
Copie todo el error de texto del descriptor y péguelo aquí;) – serhio