Conocer el nombre del formulario

12/10/2008 - 20:27 por Tomas | Informe spam
Hola a todos.

Quisiera saber si hay alguna forma de conocer el nombre de un formulario
antes de instanciarlo.

Por ejemplo, así sé el nombre del formulario:
1 - MiEspacio.MiFormulario frm = new MiEspacio.MiFormulario();
2 - string nombre = frm.Name;

Yo necesito conocerlo antes del paso 1, algo así como:
string nombre = MiEspacio.MiFormulario.Name

Lo necesito para enviarlo a una función, dentro de un método general, que me
comprobará si el formulario ya esta abierto. Lo busco por el nombre. Si ya
esta abierto lo muestro y en otro caso lo creo.

Gracias por anticipado.
Tomás.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
12/10/2008 - 21:39 | Informe spam
"Tomas" wrote in message
news:
Quisiera saber si hay alguna forma de conocer el nombre de un formulario
antes de instanciarlo.

Por ejemplo, así sé el nombre del formulario:
1 - MiEspacio.MiFormulario frm = new MiEspacio.MiFormulario();
2 - string nombre = frm.Name;

Yo necesito conocerlo antes del paso 1, algo así como:
string nombre = MiEspacio.MiFormulario.Name



No, eso no tiene mucho sentido. Name es una propiedad de instancia, y de
hecho cada instancia del mismo formulario podría tener un Name distinto, e
incluso el Name podría cambiar a lo largo del tiempo de vida de la
instancia. Por lo tanto, no tiene sentido preguntar por el Name sin haber
instanciado el formulario.

Creo que lo que te interesa es el nombre del TIPO del formulario (no el
nombre del formulario). Eso se puede conseguir asi:

string nombre = typeof(MiEspacio.MiFormulario).Name;
Respuesta Responder a este mensaje
#2 Tomas
13/10/2008 - 12:58 | Informe spam
EXACTO, tienes toda la razón, el enfoque no era el adecuado.

Como la lista de formularios abiertos la busco en this.MdiChildren del
formulario MDI principal, ¿como puedo obtener el tipo del formulario abierto
en esta llista, o tampoco es adecuado este enfoque?.

Gracias.
Respuesta Responder a este mensaje
#3 Alberto Poblacion
13/10/2008 - 16:54 | Informe spam
"Tomas" wrote in message
news:
EXACTO, tienes toda la razón, el enfoque no era el adecuado.

Como la lista de formularios abiertos la busco en this.MdiChildren del
formulario MDI principal, ¿como puedo obtener el tipo del formulario
abierto en esta llista, o tampoco es adecuado este enfoque?.



Sí, ese enfoque puede ser adecuado. Yo usaría un método de tipo "generic"
y pasaría como genérico el tipo de formulario. Sería un código parecido al
siguiente (tecleado sobre la marcha, no lo he probado):

private void AbrirFormulario<T>() where T:Form
{
foreach (Form f in this.MdiChildren)
{
if (f is T)
{
f.Activate();
return;
}
}
T frm = new T();
frm.MdiParent=this;
frm.Show();
}

Invocarlo con
AbrirFormulario<MiEspacio.MiFormulario>();
Respuesta Responder a este mensaje
#4 Tomas
13/10/2008 - 18:44 | Informe spam
Gracias.
Respuesta Responder a este mensaje
#5 crazyfearme
04/11/2008 - 20:20 | Informe spam
On 12 oct, 14:27, "Tomas" wrote:
Hola a todos.

Quisiera saber si hay alguna forma de conocer el nombre de un formulario
antes de instanciarlo.

Por ejemplo, así sé el nombre del formulario:
1 - MiEspacio.MiFormulario frm = new MiEspacio.MiFormulario();
2 - string nombre = frm.Name;

Yo necesito conocerlo antes del paso 1, algo así como:
string nombre =  MiEspacio.MiFormulario.Name

Lo necesito para enviarlo a una función, dentro de un método general, que me
comprobará si el formulario ya esta abierto. Lo busco por el nombre. Si ya
esta abierto lo muestro y en otro caso lo creo.

Gracias por anticipado.
Tomás.




Aqui hay un método para hacer lo que quieres, tal y como quieres:

for (int i = 0; i < this.MdiChildren.Length; i++)
{
if (this.MdiChildren[i].Name == "ElQueQuiero")
{
//Si existe, como ejemplo se restaura en caso
de estar minimizado.
if (this.MdiChildren[i].WindowState =FormWindowState.Minimized)
{
this.MdiChildren[i].WindowState FormWindowState.Normal;
this.MdiChildren[i].Show();
this.MdiChildren[i].BringToFront();
i = this.MdiChildren.Length;
}
else
{
//En caso de que no este abierto. (Lo que
necesitas o quieres.)
if ((i + 1) == this.MdiChildren.Length)
{
MiApp_FormQuerer form01 = new
MiApp_FormQuerer();
form01.Name = "ElQueQuiero";
form01.MdiParent = this; //Recuerda que es
una ventana hija.
form01.Show();
form01.BringToFront();
i = this.MdiChildren.Length;
}
}
}

Saludos!!
Crazy Fear Me
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida