Formulario Child

Pues bueno mi duda o mi problema es el siguiente...
Estoy trabajando en un proyecto bastante grande... Que consta principalmente de un formulario padre y varios child (a parte de otros). Y el problema que tengo es que cuando hago .show de los hijos desde el menu del principal, el formulario hijo se me carga dos veces... (como si entrara dos veces en el load() y en el resize()) pero esto pasa solo si tengo código en estos métodos.
Pues eso haber si te había pasado algo parecido o si tienes información o algún post de formularios child me dices donde puedo encontrarlo...
Yo seguiré investigando por ahí...

1 respuesta

Respuesta
1
Primero : Comprueba que no se llama a ningún evento de la ventana por el nombre de la clase. Lease, en el ejemplo anterior valida que no haya ninguna llamada a frmVentanaEntrada. show o algo similar. Eso provocaría la creación de otro objeto.
Segundo : Pon option explicit en el principio de cada archivo de código para que cada variable esté inicializada correctamente.
Si aun así no encuentras la solución, mandame la carga de esa ventana, o miralo tu mismo en la pila de procesos cuando se ha creado dicho objeto. Con ello encontraras la linea que te genero ese error.
La verdad es que así los tengo inicializados...
Los tengo inicializados en el MDIForm_Load() del formulario padre, lo que también pienso es que al ser objetos com que se llaman entre ellos. Tengo miedo que me haga dos new o algo así... Pero debuggeando solo veo que entra dos veces en el "load" del formulario child.
Gracias por la contestación y si se te ocurre algo aquí estamos para probarlo.
cALvET
Es sencillo. Los formularios de Visual Basic son clases, aunque nadie lo diga en ningún lado. La gente, al declararse variables del estilo de un formulario, a veces no se da cuenta y hacen llamadas a la clase directamente. Eso es un error.
Cuando declaras un formulario, debes primero inicializar la variable y luego asignarle espacio, igual que haces con cualquier otro objeto de Visual.
Es decir, supongamos que tienes un formulario que has creado que se llama frmVentanaEntrada. El llamar al formulario mediante instrucciones del tipo :
frmVentanaEntrada.show
Es una gran incorrección dado que frmVentanaEntrada es una clase, y no deberías usarla más que a través de un objeto declarado e instanciado a través de el.
La forma correcta seria :
Dim ObjVentana as frmVentanaEntrada
Set ObjVentana = new frmVentanaEntrada
ObjVentana.show
Si juegas con ObjVentana en exclusiva, solo se crea un formulario por cada new que hagas del mismo, y además Obtienes un objeto que puedes referenciar durante toda la vida del mismo.
Si necesitas algo más, aquí estoy.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas