FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Como evitar 2 instancias de una misma ventana hija
Hola a todos.
Pues creo que el mismo titulo lo dice todo. Como hago para evitar que abran dos instncias de una misma ventana hija en una aplicacion mdi en C#.
__________________
Optimus Prime |
#2
|
|||
|
|||
llamar la ventana hijos con showmodal
atte jgutti |
#3
|
||||
|
||||
Hola jGutti.
Pos gracias, pero eso no funciona, recuerda que es una aplicacion MDI, ademas lo mas parecido en c# es showdialog.
__________________
Optimus Prime |
#4
|
||||
|
||||
Hola,
Tal vez por ignorancia que a mí no se me ocurre ahora mismo sino lo típico, supongo: declarar una variable "global" dentro de la clase del "Form1", que mantenga una referencia a cierto objeto "Form2". Cuando se precise mostrar el formulario "Form2" se mirará si dicha variable es "null", y, en caso de que lo sea crear y mostrar el formulario "Form2", y, en caso de que no lo sea (lo cual nos indicará que el objeto ya ha sido creado, obviamente) levantar una excepción o simplemente darle el "foco" al formulario "Form2" previamente creado. Es mucho más sencillo de ver con algo de código: Código:
namespace WindowsApplication1 { public partial class Form1 : Form { // Variable "global" en que guardar una // referencia a un objeto de tipo "Form2" public Form2 form2 = null; // Constructor de "Form1" public Form1() { InitializeComponent(); } // Evento "Click" de un botón en "Form1" private void button1_Click(object sender, EventArgs e) { if (form2 == null) // ¿"form2" es aún "null"? { form2 = new Form2(); // Creamos un objeto "Form2" form2.MdiParent = this; // Lo emparentamos ;-) form2.Show(); // Y lo mostramos } else // ¿"form2" ya tiene una referencia válida? { form2.Focus(); // Damos el foco al formulario "Form2" //throw new Exception("Ya existe el formulario"); } } } } Última edición por dec fecha: 10-12-2005 a las 10:55:44. Razón: Edición del texto. |
#5
|
||||
|
||||
Hola Dec.
Muchas gracias por la respuesta, pero justo un momento antes y luego de partirme un poco el coco, hice una pequeña funcion para que hiciera lo que quiero. Por si alguien le interesa y si se puede mejorar mas, pos aqui coloco el codigo de lo que hice. Código:
private Form MdiChildExist( String sNombreChild ) { foreach( Form frmExiste in this.MdiChildren ) if(frmExiste.Name == sNombreChild) return frmExiste; return null; }
__________________
Optimus Prime |
#6
|
||||
|
||||
Holas a todos.
Este post es para corregir algo que dije arriba, en cuanto al efecto no muy agradable cuando se muestra un form hijo, luego de probar vi que ya sea con el bringtofront o con el focus este efecto persiste. Agradeceria ahora si alguien sabe como quitar este efecto o por lo menos reducirlo para que no se note mucho.
__________________
Optimus Prime |
|
|
|