none
Saber si un Formulario esta abierto... C# RRS feed

  • Pregunta

  • Hola como estan...

    Necesito saber si determinados Forms ya se encuentran abiertos en C#

    He hecho algo como esto...

     

    for (int i = 0; i < Application.OpenForms.Count; i++)

                {

                    string nombreForm = Application.OpenForms[i].ToString();

                    if (nombreForm.Contains("frmName") != false)

                    {

                                          MessageBox.Show("Esta Abierto");

                        return;

                    }

                }

    Pero creo que como que no es la manera correcta de hacerlo… Sera que hay una forma especifica para ello…

    Otra pregunta, si un Formulario que ya se abrio, esta oculto, es decir, hay un boton this.Hide(); y se oculto, como lo muestro visible de nuevo???

    Muchas gracias a todos por su ayuda…

    miércoles, 21 de abril de 2010 19:50

Respuestas

  • Buenas:

    No esta mal lo que haces de recorrer la propiedad OpenForms de la clase Application. Lo que por ahi puedes hacer es usar un foreach y dentro de este verificar el tipo de dato.

     

    foreach(Form frm in Application.OpenForms)
    {
      if(frm.GetType() == typeof(Form2))
      {
       MessageBox.Show("El formulario 2 esta abierto");
       break;
      }
    }

     

    Para mostrar un formulario que esta oculto, usa el metodo Show().

    Saludos

    Sparow

    • Marcado como respuesta AdyIr jueves, 22 de abril de 2010 13:57
    miércoles, 21 de abril de 2010 20:11
  • Otra manera seria:

    Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmName").SingleOrDefault<Form>();

    if (existe != null)

    {

         MessageBox.Show("El Formulario 2 esta abierto");

    }

    miércoles, 21 de abril de 2010 20:35
    Moderador

Todas las respuestas

  • Buenas:

    No esta mal lo que haces de recorrer la propiedad OpenForms de la clase Application. Lo que por ahi puedes hacer es usar un foreach y dentro de este verificar el tipo de dato.

     

    foreach(Form frm in Application.OpenForms)
    {
      if(frm.GetType() == typeof(Form2))
      {
       MessageBox.Show("El formulario 2 esta abierto");
       break;
      }
    }

     

    Para mostrar un formulario que esta oculto, usa el metodo Show().

    Saludos

    Sparow

    • Marcado como respuesta AdyIr jueves, 22 de abril de 2010 13:57
    miércoles, 21 de abril de 2010 20:11
  • Otra manera seria:

    Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmName").SingleOrDefault<Form>();

    if (existe != null)

    {

         MessageBox.Show("El Formulario 2 esta abierto");

    }

    miércoles, 21 de abril de 2010 20:35
    Moderador
  • Buenas:

    No esta mal lo que haces de recorrer la propiedad OpenForms de la clase Application. Lo que por ahi puedes hacer es usar un foreach y dentro de este verificar el tipo de dato.

     

    foreach(Form frm in Application.OpenForms)
    
    {
    
     if(frm.GetType() == typeof(Form2))
    
     {
    
      MessageBox.Show("El formulario 2 esta abierto");
    
      break;
    
     }
    
    }
    
    

     

    Para mostrar un formulario que esta oculto, usa el metodo Show().

    Saludos

    Sparow


    Hola gracias por tu ayuda amigo, una preguntita con respecto al segundo punto me dices que utilice Show();

     

    Pero a que le aplico la propiedad frm??? Es decir si hago esto…:

    Form2 frm = new Form2();

                        frm.Show();

     

    Me abrira un form nuevo y necesito abrir uno que ya estaba abierto y poseia datos…

    Gracias por tu ayuda…

    miércoles, 21 de abril de 2010 20:50
  • Otra manera seria:

    Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmName").SingleOrDefault<Form>();

    if (existe != null)

    {

         MessageBox.Show("El Formulario 2 esta abierto");

    }


    Wow si no me equivoco esa es una expresion Lambda??? En verdad jamaz se me hubiera ocurrido algo ni parecido... Mil gracias...
    miércoles, 21 de abril de 2010 20:51
  • Por si a alguien aún le sirve yo utilicé lo siguiente para obtener el formulario en primer plano.

        foreach (Form frm in Application.OpenForms)
                {
                    if (frm.GetType() == typeof(nombre de la forma))
                    {
                        if (frm.WindowState == FormWindowState.Minimized)
                        {
                            frm.WindowState = FormWindowState.Normal;
                        }
                        frm.BringToFront();
                        break;
                    }
                }

          

    • Propuesto como respuesta Havik23 jueves, 27 de septiembre de 2012 17:37
    jueves, 27 de septiembre de 2012 17:25
  • Otra manera seria:

    Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "frmName").SingleOrDefault<Form>();

    if (existe != null)

    {

         MessageBox.Show("El Formulario 2 esta abierto");

    }

    Muchas gracias me sirvio de mucho
    domingo, 5 de octubre de 2014 2:47
  • Para verificar si el formulario esta abierto y si lo esta que lo envia a primer plano yo hago esto

     Form existe = Application.OpenForms.OfType<Form>().Where(pre => pre.Name == "nombredelformulario").SingleOrDefault<Form>();
    
                if (existe != null)
                {
    
                   
    
                    existe.WindowState = FormWindowState.Normal;
                    existe.BringToFront();
    
                }
                else
                {
    
                    nombredelform frm = new nombredelform();
                    frm.Show();
                }

    Funciona al 100%.


    lunes, 20 de abril de 2015 18:53