Este código me lo encontré en una página, no me acuerdo cual, y me ha sido muy útil, su función es permitir solo una instancia del formulario abierta. Entonces si ya tenemos abierto un formulario, y lo volvemos a tratar de abrir, el mostrara el primer formulario abierto, en ves de crear una nueva instancia.
Uso:
Este código se debe copiar en cada formulario, que se desee dotar de esta funcionalidad
Y se reemplaza
Formulariopor el nombre de la clase del formulario.
private static Formulario m_FormDefInstance; ////// Crea una instancia unica del Formulario /// ///Instancia por defecto public static Formulario DefInstance { get { if (m_FormDefInstance == null || m_FormDefInstance.IsDisposed) m_FormDefInstance = new Formulario (); return m_FormDefInstance; } set { m_FormDefInstance = value; } }
Para abrir el formulario se utiliza:
Formulario.DefInstance.Show();
Un comentario: hay un error en donde dice
ResponderEliminarif (m_FormDefInstance == null m_FormDefInstance.IsDisposed)
debe decir:
if (m_FormDefInstance == null || m_FormDefInstance.IsDisposed)
Eso nada más, gracias por la solución.
Muchas gracias, ya esta corregido
ResponderEliminarA partir de este código hice mi propia rutina para tener sólo una instancia de una ventana :D
ResponderEliminarexcelente post muchas gracias, me fue muy útil, de esas cosas pequeñitas pero inteligentes.
ResponderEliminarGracias por el aporte solo un comentario si la ventana es hija hay que agregar lo siguiente para abrir el formulario
ResponderEliminarfrm_libros.DefInstance.MdiParent = this;
frm_libros.DefInstance.Show();
Gracias por el aporte solo un comentario si la ventana es hija hay que agregar lo siguiente para abrir el formulario
ResponderEliminarFormulario.DefInstance.MdiParent = this;
Formulario.DefInstance.Show();
que gran solucion gracias me sirvio de mucho!!!!
ResponderEliminaryo añadi esta linea para que me devuelva el formulario adelante de todos
ResponderEliminarfrmConsulta.DefInstance.TopMost = true;
Brutal! Me sirvió, gracias crack!
ResponderEliminar