Como cargar una sola ventana hija

02/05/2005 - 19:34 por Ernesto Ramos | Informe spam
Hola a todos los del foro. Quisiera que alguien me ayude.
Sucede que tengo una aplicación MDI en donde las ventanas
hijas son pantallas de mantenimiento. Lo que deseo es que
si ya estoy modificando un determinado producto entonces
no se abra una nueva ventana sino que me muestre la que ya
está activa con ese producto.

A ver quien me puede ayudar.

Preguntas similare

Leer las respuestas

#1 Jose Luis Manners
02/05/2005 - 19:52 | Informe spam
Hola Ernesto,

Lo que puedes hacer es crear una propiedad en la(s) pantalla(s) hija(s) que
devuelva el número del producto que cada formulario este utilizando,
entonces lo comparas con el producto que quieres modificar y si son iguales
entonces quiere decir que ya existe un formulario con ese producto y
ejecutas el método Activate() de ese formulario, de lo contrario creas un
nuevo formulario y sigues tu procedimiento normal. Mira este ejemplo:

En el formulario hijo:

public FormularioHijo(string numeroProducto)
{
this._numeroProducto = numeroProducto;

// haces algo aquí
}

public string NumeroProducto
{
get { return this._numeroProducto; }
}



En el formulario MDI:

private void unMenuCualquiera_Click(object sender, System.EventArgs e)
{
bool encontrado = false;

foreach(Form form in this.MdiChildren)
{
if (form.Name.Equals("Aquí pon el título del formulario"))
{
FormularioHijo frmHijo = (FormularioHijo) form;

if (frmHijo.NumeroProducto.Equals("El número del producto que
quieres va aquí"))
{
encontrado = true;
form.Activate();
}
}
}

if (!encontrado)
{
FormularioHijo frmHijo = new FormularioHijo("El número del producto
que quieres va aquí");
frmHijo.MdiParent = this;
frmHijo.Show();
}
}

Espero te sirva.

Saludos,

Jose Luis Manners, MCP
English: http://blogs.geekdojo.net/jmanners
Español: http://weblogs.golemproject.com/jmanners/

"Encuentra felicidad en tu trabajo o nunca serás feliz."
Cristóbal Colón

"Ernesto Ramos" wrote in message
news:165c01c54f3d$25b0cbb0$
Hola a todos los del foro. Quisiera que alguien me ayude.
Sucede que tengo una aplicación MDI en donde las ventanas
hijas son pantallas de mantenimiento. Lo que deseo es que
si ya estoy modificando un determinado producto entonces
no se abra una nueva ventana sino que me muestre la que ya
está activa con ese producto.

A ver quien me puede ayudar.
Respuesta Responder a este mensaje
#2 Ernesto Ramos
02/05/2005 - 21:02 | Informe spam
¡ Excelente ! Eso eso era lo que necesitaba. Muchas
gracias José Luis y te felicito por tu blog que está muy
bueno.

Hola Ernesto,

Lo que puedes hacer es crear una propiedad en la(s)


pantalla(s) hija(s) que
devuelva el número del producto que cada formulario este


utilizando,
entonces lo comparas con el producto que quieres


modificar y si son iguales
entonces quiere decir que ya existe un formulario con ese


producto y
ejecutas el método Activate() de ese formulario, de lo


contrario creas un
nuevo formulario y sigues tu procedimiento normal. Mira


este ejemplo:

En el formulario hijo:

public FormularioHijo(string numeroProducto)
{
this._numeroProducto = numeroProducto;

// haces algo aquí
}

public string NumeroProducto
{
get { return this._numeroProducto; }
}



En el formulario MDI:

private void unMenuCualquiera_Click(object sender,


System.EventArgs e)
{
bool encontrado = false;

foreach(Form form in this.MdiChildren)
{
if (form.Name.Equals("Aquí pon el título del


formulario"))
{
FormularioHijo frmHijo = (FormularioHijo)


form;

if (frmHijo.NumeroProducto.Equals("El número


del producto que
quieres va aquí"))
{
encontrado = true;
form.Activate();
}
}
}

if (!encontrado)
{
FormularioHijo frmHijo = new FormularioHijo("El


número del producto
que quieres va aquí");
frmHijo.MdiParent = this;
frmHijo.Show();
}
}

Espero te sirva.

Saludos,

Jose Luis Manners, MCP
English: http://blogs.geekdojo.net/jmanners
Español: http://weblogs.golemproject.com/jmanners/

"Encuentra felicidad en tu trabajo o nunca serás feliz."
Cristóbal Colón

"Ernesto Ramos"


wrote in message
news:165c01c54f3d$25b0cbb0$
Hola a todos los del foro. Quisiera que alguien me ayude.
Sucede que tengo una aplicación MDI en donde las ventanas
hijas son pantallas de mantenimiento. Lo que deseo es que
si ya estoy modificando un determinado producto entonces
no se abra una nueva ventana sino que me muestre la que ya
está activa con ese producto.

A ver quien me puede ayudar.


.

Respuesta Responder a este mensaje
#3 Don Quijote de Nicaragua
03/05/2005 - 17:43 | Informe spam
Don Quijote de Nicaragua.
También encontre esta opcion.
http://groups.google.es/groups?hl=e...=GGLD,GGLD:2005-04,GGLD:es&selm=%23Xfx2cC5EHA.2124%40TK2MSFTNGP15.phx.gbl

"Tristan" escribió en el mensaje
news:
Otra opción es crear un Hashtable en el que almacenes el par,
producto-ventana.

Es decir, cuando cargues un mdi para un producto, añades el par, nombre de
producto como clave, y referencia al formulario, como valor. Y recuerda,


los
objetos son referencias, no estás duplicando nada en memoria.


Juan Carlos Badiola
MVP - C#


Respuesta Responder a este mensaje
#4 Tristan
03/05/2005 - 22:40 | Informe spam
Otra opción es crear un Hashtable en el que almacenes el par,
producto-ventana.

Es decir, cuando cargues un mdi para un producto, añades el par, nombre de
producto como clave, y referencia al formulario, como valor. Y recuerda, los
objetos son referencias, no estás duplicando nada en memoria.


Juan Carlos Badiola
MVP - C#
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida