Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > .NET
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-12-2005
Avatar de edgusano
edgusano edgusano is offline
Miembro
 
Registrado: abr 2004
Ubicación: Medellin Colombia
Posts: 180
Poder: 21
edgusano Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 10-12-2005
jgutti jgutti is offline
Miembro
 
Registrado: may 2003
Posts: 189
Poder: 22
jgutti Va por buen camino
llamar la ventana hijos con showmodal

atte

jgutti
Responder Con Cita
  #3  
Antiguo 10-12-2005
Avatar de edgusano
edgusano edgusano is offline
Miembro
 
Registrado: abr 2004
Ubicación: Medellin Colombia
Posts: 180
Poder: 21
edgusano Va por buen camino
Hola jGutti.
Pos gracias, pero eso no funciona, recuerda que es una aplicacion MDI, ademas lo mas parecido en c# es showdialog.
__________________
Optimus Prime
Responder Con Cita
  #4  
Antiguo 10-12-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.119
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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");
	  }
	}
  }
}
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 10-12-2005 a las 10:55:44. Razón: Edición del texto.
Responder Con Cita
  #5  
Antiguo 10-12-2005
Avatar de edgusano
edgusano edgusano is offline
Miembro
 
Registrado: abr 2004
Ubicación: Medellin Colombia
Posts: 180
Poder: 21
edgusano Va por buen camino
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;
}
Esta funcion Recibe el nombre del form que se quiere abrir y lo busca en la coleccion de forms hijos que tiene el form padre, si lo encuentra retorna la referencia a este form si no, retorna un null, ya luego lo que hago es verificar en donde se haga el llamado a esta funcion que retorno y si la referencia es null, pos creo el formulario y si no es null, hago un frmChild.BringToFront, igual me imagino que se puede hacer frmChild.Focus, Aunque el con el BringToFront me gusto el hecho que no se vea el efecto no muy agradable en la ventana hija cuando se abre, como cuando se hace un frmChild.Show, aunque no he probado lo del frmChild.Focus, lo digo por lo del efecto aquel
__________________
Optimus Prime
Responder Con Cita
  #6  
Antiguo 12-12-2005
Avatar de edgusano
edgusano edgusano is offline
Miembro
 
Registrado: abr 2004
Ubicación: Medellin Colombia
Posts: 180
Poder: 21
edgusano Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 20:06:37.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi