Principales respuestas
Problemas con Form padres e hijos

Pregunta
-
Buenas, me ha surgido un problema. He conseguido abrir una Form, de tal manera que quede dentro de la Form padre. El problema que tengo es al abrirla y cerrarla, al abrirla por primera vez y cerrarla funciona OK. El problema viene al abrirla por una segunda vez me da el siguiente error:
System.Exception: Attempt to load Texture2D resource 'Tile Texture', the resource is already loaded.
en Rug.LiteGL.Texture2D.LoadResources()
en Rug.LiteGL.BitmapTexture2D.LoadBitmap(Bitmap bitmap)
en Rug.LiteGL.BitmapTexture2D.LoadResources()
en Proyecto.FormView.GlControl1_Load(Object sender, EventArgs e) en C:\Desktop\Proyecto.NET\Proyecto\View\FormView.cs:línea 284El código que empleo para abrir el form es:
private void dViewToolStripMenuItem_CheckedChanged(object sender, EventArgs e)
{
if (dViewToolStripMenuItem.Checked)
{
mi_FormView.MdiParent = this.MdiParent;
mi_FormView.Show();
}
else
{
mi_FormView.Hide();}
}Además tengo un evento al cerrar el Form que gestiona el check del menú.
private void miFormView_FormClosed(object sender, EventArgs e)
{
dViewToolStripMenuItem.Checked = mi_FormView.Visible;
}Tienen idea de por que sucede este error. Si quito esta parte del código mi_FormView.MdiParent = this.MdiParent; funciona correctamente, por lo que he deducido que es al meterlo en el contenedor.
Muchas gracias de antemano.
Saludos.
Respuestas
-
Finalmente conseguí que funcionara, el problema por lo que entiendo residía en la forma de ocultar el form con el HIDE. He cambiado esta parte del programa por un FORM.CLOSE(); y justo después de cerrarla vuelvo a hacer a un NEW FORM y la declaro como MdiParent y a funcionar!
gracias de todas maneras.
- Marcado como respuesta GabrieloBurja viernes, 6 de abril de 2018 14:01
Todas las respuestas
-
Buenas,
Podrías ponernos el código entero del formulario donde accedes o utilizas ese segundo formulario? pregunto esto porque no veo donde inicializas mi_FormView o como lo haces
Quedo a la espera de tu respuesta
No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.
Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:
-
hola
lo que no veo es donde creas la instancia del form, o sea donde usas el "new", porque la asignacion del MdiParent solo deberias hacerla una unica vez cuando creas la instancia
dodne realices
mi_FormView = new FormView();
mi_FormView.MdiParent = this.MdiParent;
asigna el MdiParenty quitalo de donde haces el show
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina -
Buenas, probé lo que comentaste pero no funciona.
La instancia del Form la tengo inicializada con el siguiente código:
private FormSecundaria mi_FormView = new FormSecundaria();
justo debajo he añadido el código, tal y como propones:
mi_FormView.MdiParent = this.MdiParent;
Pero me da varios errores tipo CS0103 El nombre 'mi_FormView no existe en el contexto actual', El nombre MdiParent no existe en el contexto actual. etc...
Gracias de antemano.
- Propuesto como respuesta Tonatiuh AbregoModerator jueves, 5 de abril de 2018 15:31
-
Finalmente conseguí que funcionara, el problema por lo que entiendo residía en la forma de ocultar el form con el HIDE. He cambiado esta parte del programa por un FORM.CLOSE(); y justo después de cerrarla vuelvo a hacer a un NEW FORM y la declaro como MdiParent y a funcionar!
gracias de todas maneras.
- Marcado como respuesta GabrieloBurja viernes, 6 de abril de 2018 14:01