Hola, eso pasa porque estas instanciando el formulario varias veces, cada que tu lo instancias crea nuevamente los controles por lo tanto los crea limpios.
Te paso la solución:
Todo esto va en el formulario que abreres desde otro o desde un MDI.
Primero create una instancia:
Código:
private static frmNombreDeFormulario frmInstance = null;
Después coloca este código en alguna parte de tu pantalla:
Este codigo nos sirve para que el objeto en este caso la pantalla no se instancie mas de una vez, es decir si ya esta abierta y con datos ya no la vuelva a cargar.
Código:
public static frmNombreDeFormulario Instance(string strConn)
{
if (((frmInstance == null) || (frmInstance.IsDisposed == true)))
{
frmInstance = new frmNombreDeFormulario ();
}
frmInstance.BringToFront();
return frmInstance;
}
y por ultimo cuando lo vallas a abrir haslo asi:
Código:
frmNombreDeFormulario _frmNombreDeFormulario = null;
_frmNombreDeFormulario = frmNombreDeFormulario.Instance();
_frmNombreDeFormulario.Show;
Espero que te sea de utilidad.