Alguien sabe cómo puedo hacer para tener una instancia de un formulario que es un mdichild? Estoy usando c#.net con vs 2010.
Gracias por la ayuda.
| |||
Sólo una instancia de un formulario. Alguien sabe cómo puedo hacer para tener una instancia de un formulario que es un mdichild? Estoy usando c#.net con vs 2010. Gracias por la ayuda. |
| ||||
Respuesta: Sólo una instancia de un formulario. Que tal colega, te paso el codigo a tu pregunta, espero que te sea util y me des KARMA :) En el formulario hijo declaras esto, frmFormulas es el nombre de tu pantalla
Código:
Luego pones esto como metodoprivate static frmFormulas frmInstance = null;
Código:
public static frmFormulas Instance() { if (((frmInstance == null) || (frmInstance.IsDisposed == true))) { frmInstance = new frmFormulas(); } frmInstance.BringToFront(); return frmInstance; } entonces cuando abras tu formulario hijo desde el pare lo hace asi:
Código:
Lo que hara el metodo es que verifica si ya esta instanciada y si es asi ya no la instancia.Declaras el formulario al abrir tu menu: frmFormulas _frmFormulas = null; Instancias el formulario _frmFormulas = frmFormulas.Instance() Lo abres: _frmFormulas .MdiParent = this; _frmFormulas .Show(); Y es todo! :)
__________________ http://vazquezvega.wordpress.com/ "La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás." |
| |||
Respuesta: Sólo una instancia de un formulario. Me parece que en el caso de los formularios no conviene utilizar singleton (el patrón que muestra mvazquez). Porque cuando cierres el form vas a mantener la misma instancia al reabrirlo. Sí no me equivoco estas buscando que el usuario no pueda abrir dos veces el mismo form. Tengo un ejemplo de una app en donde gestiono eso:
Código:
El formulario principal tiene la instancia de _frmUsuarios, al hacer click sobre la opción del menú lo tildo, y en base a eso controlo si el usuario lo lanza solo una vez.if (usuariosToolStripMenuItem.Checked) _frmUsuarios.Close(); else { _frmUsuarios = new FrmUsuarios(Manager); _frmUsuarios.FormClosed += new FormClosedEventHandler(frmUsuarios_FormClosed); _frmUsuarios.MdiParent = this; _frmUsuarios.Show(); } usuariosToolStripMenuItem.Checked = !usuariosToolStripMenuItem.Checked; Te paso el link para que veas como funca: http://www.orientadoanet.com/2011/08/c-programa-de-chat.html
__________________ www.orientadoanet.com |
| ||||
Respuesta: Sólo una instancia de un formulario. laguzzigerardo. Lo que estoy pasando es justamente para abrir solamente una vez el formulario. Una vez abierto te mantiene la instancia, cuando lo cierras esa instancia se pierde y se va a GC, si lo vuelves a abrir crea nuevamente su nueva instancia. No funciona como tú lo comentas, tengo alrededor de 100 formularios en un menú de y me funcionan a la perfección. ![]()
__________________ http://vazquezvega.wordpress.com/ "La paciencia nos da el privilegio de compartir el refrescante fruto de Dios con los demás." |
| |||
Respuesta: Sólo una instancia de un formulario. Este código lo tengo que implementar por cada formulario que tenga o hay alguna forma de adaptarlo para que funcione para N formularios. Saludos... |
Etiquetas: |