mainMenu

18/05/2005 - 21:50 por David | Informe spam
Hola! he creado un mainMenu en un formulario1. despues cree
mas formularios y quiero q todos tengan ese mismo menu.
para ello puse en cada formulario donde se inicializan los
componentes "this.Menu = mainMenu", pasandole antes, a la
hora de crear el formulario2 el mainMenu del formulario1.
pero no se porque, pero me desaparece a veces esta
sentencia a la hora de ejecutar. no debo ponerlo a la hora
de inicializar componentes???

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
18/05/2005 - 23:03 | Informe spam
David,

La técnica que usas puede resultar peligrosa. Recuerda que cuando haces

this.Menu = mainMenu

simplemente estás haciendo que this.Menu apunte al mismo objeto que
mainMenu.
Pienso que tu problema se deba a que los menús utilizan recursos del sistema
y cuando cierras un formulario estos recursos se liberan, con lo que los
demás formularios se quedan "cojos". Si un menú fuera sólo memoria, no
debería haber problemas.

Prueba a cambiar esa instrucción por:

this.Menu = (MainMenu) mainMenu.Clone();

para que cada formulario tenga su propia copia.

Slds - Octavio


"David" escribió en el mensaje
news:062801c55be2$e7d35350$
Hola! he creado un mainMenu en un formulario1. despues cree
mas formularios y quiero q todos tengan ese mismo menu.
para ello puse en cada formulario donde se inicializan los
componentes "this.Menu = mainMenu", pasandole antes, a la
hora de crear el formulario2 el mainMenu del formulario1.
pero no se porque, pero me desaparece a veces esta
sentencia a la hora de ejecutar. no debo ponerlo a la hora
de inicializar componentes???
Respuesta Responder a este mensaje
#2 Anonimo
19/05/2005 - 09:50 | Informe spam
Hola de nuevo!
He probado lo que me has dicho pero no se puede llamar al
metodo Clone() sobre el mainMenu. (estoy programado en c#).
hay otra posibilidad??
gracias


David,

La técnica que usas puede resultar peligrosa. Recuerda que


cuando haces

this.Menu = mainMenu

simplemente estás haciendo que this.Menu apunte al mismo


objeto que
mainMenu.
Pienso que tu problema se deba a que los menús utilizan


recursos del sistema
y cuando cierras un formulario estos recursos se liberan,


con lo que los
demás formularios se quedan "cojos". Si un menú fuera sólo


memoria, no
debería haber problemas.

Prueba a cambiar esa instrucción por:

this.Menu = (MainMenu) mainMenu.Clone();

para que cada formulario tenga su propia copia.

Slds - Octavio


"David" escribió en el mensaje
news:062801c55be2$e7d35350$
Hola! he creado un mainMenu en un formulario1. despues cree
mas formularios y quiero q todos tengan ese mismo menu.
para ello puse en cada formulario donde se inicializan los
componentes "this.Menu = mainMenu", pasandole antes, a la
hora de crear el formulario2 el mainMenu del formulario1.
pero no se porque, pero me desaparece a veces esta
sentencia a la hora de ejecutar. no debo ponerlo a la hora
de inicializar componentes???




.

Respuesta Responder a este mensaje
#3 Octavio Hernandez
19/05/2005 - 10:33 | Informe spam
Hola!

Perdona, se me fue totalmente "la olla" :-) Es en Java donde la clase Object
tiene un método Clone() que todas las clases redefinen luego a su
conveniencia como ToString().

En cuanto a tu problema, estoy convencido de que se trata de eso. Hay que
crear un nuevo objeto menú a partir del otro. Lo investigo un poco y te
comento.

Slds - Octavio

escribió en el mensaje
news:0bc101c55c47$7981f2c0$
Hola de nuevo!
He probado lo que me has dicho pero no se puede llamar al
metodo Clone() sobre el mainMenu. (estoy programado en c#).
hay otra posibilidad??
gracias


David,

La técnica que usas puede resultar peligrosa. Recuerda que


cuando haces

this.Menu = mainMenu

simplemente estás haciendo que this.Menu apunte al mismo


objeto que
mainMenu.
Pienso que tu problema se deba a que los menús utilizan


recursos del sistema
y cuando cierras un formulario estos recursos se liberan,


con lo que los
demás formularios se quedan "cojos". Si un menú fuera sólo


memoria, no
debería haber problemas.

Prueba a cambiar esa instrucción por:

this.Menu = (MainMenu) mainMenu.Clone();

para que cada formulario tenga su propia copia.

Slds - Octavio


"David" escribió en el mensaje
news:062801c55be2$e7d35350$
Hola! he creado un mainMenu en un formulario1. despues cree
mas formularios y quiero q todos tengan ese mismo menu.
para ello puse en cada formulario donde se inicializan los
componentes "this.Menu = mainMenu", pasandole antes, a la
hora de crear el formulario2 el mainMenu del formulario1.
pero no se porque, pero me desaparece a veces esta
sentencia a la hora de ejecutar. no debo ponerlo a la hora
de inicializar componentes???




.

Respuesta Responder a este mensaje
#4 Octavio Hernandez
19/05/2005 - 10:51 | Informe spam
Hola!

Realmente la solución es muy fácil, la clase MainMenu tiene un método
CloneMenu(). Utiliza:

this.Menu = mainMenu.CloneMenu();

Slds - Octavio

escribió en el mensaje
news:0bc101c55c47$7981f2c0$
Hola de nuevo!
He probado lo que me has dicho pero no se puede llamar al
metodo Clone() sobre el mainMenu. (estoy programado en c#).
hay otra posibilidad??
gracias


David,

La técnica que usas puede resultar peligrosa. Recuerda que


cuando haces

this.Menu = mainMenu

simplemente estás haciendo que this.Menu apunte al mismo


objeto que
mainMenu.
Pienso que tu problema se deba a que los menús utilizan


recursos del sistema
y cuando cierras un formulario estos recursos se liberan,


con lo que los
demás formularios se quedan "cojos". Si un menú fuera sólo


memoria, no
debería haber problemas.

Prueba a cambiar esa instrucción por:

this.Menu = (MainMenu) mainMenu.Clone();

para que cada formulario tenga su propia copia.

Slds - Octavio


"David" escribió en el mensaje
news:062801c55be2$e7d35350$
Hola! he creado un mainMenu en un formulario1. despues cree
mas formularios y quiero q todos tengan ese mismo menu.
para ello puse en cada formulario donde se inicializan los
componentes "this.Menu = mainMenu", pasandole antes, a la
hora de crear el formulario2 el mainMenu del formulario1.
pero no se porque, pero me desaparece a veces esta
sentencia a la hora de ejecutar. no debo ponerlo a la hora
de inicializar componentes???




.

Respuesta Responder a este mensaje
#5 David
19/05/2005 - 11:12 | Informe spam
Muchas gracias por tu preocupacion.

Hola!

Perdona, se me fue totalmente "la olla" :-) Es en Java


donde la clase Object
tiene un método Clone() que todas las clases redefinen


luego a su
conveniencia como ToString().

En cuanto a tu problema, estoy convencido de que se trata


de eso. Hay que
crear un nuevo objeto menú a partir del otro. Lo investigo


un poco y te
comento.

Slds - Octavio

escribió en el mensaje
news:0bc101c55c47$7981f2c0$
Hola de nuevo!
He probado lo que me has dicho pero no se puede llamar al
metodo Clone() sobre el mainMenu. (estoy programado en c#).
hay otra posibilidad??
gracias


David,

La técnica que usas puede resultar peligrosa. Recuerda que


cuando haces

this.Menu = mainMenu

simplemente estás haciendo que this.Menu apunte al mismo


objeto que
mainMenu.
Pienso que tu problema se deba a que los menús utilizan


recursos del sistema
y cuando cierras un formulario estos recursos se liberan,


con lo que los
demás formularios se quedan "cojos". Si un menú fuera sólo


memoria, no
debería haber problemas.

Prueba a cambiar esa instrucción por:

this.Menu = (MainMenu) mainMenu.Clone();

para que cada formulario tenga su propia copia.

Slds - Octavio


"David" escribió en el mensaje
news:062801c55be2$e7d35350$
Hola! he creado un mainMenu en un formulario1. despues cree
mas formularios y quiero q todos tengan ese mismo menu.
para ello puse en cada formulario donde se inicializan los
componentes "this.Menu = mainMenu", pasandole antes, a la
hora de crear el formulario2 el mainMenu del formulario1.
pero no se porque, pero me desaparece a veces esta
sentencia a la hora de ejecutar. no debo ponerlo a la hora
de inicializar componentes???




.





.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida