none
Visualizar todos los formularios. RRS feed

  • Pregunta

  • Hola, queria hacer un botón para mi aplicación que al pulsarlo se vieran todos los formularios, es decir los que estan minimizados y los que ya se ven, ya que mi aplicacion cuenta con gran número de formularios y tener que estar maximizando uno por uno es bastante trabajoso.

    Un saludo y gracias

    lunes, 5 de abril de 2010 8:59

Respuestas

  • Bueno, pues si es una SDI, recurres a guardar los formularios y cambiarles el WindowState. por ejemplo, en una clase cualquiera de tu proyecto declaras un List<Form> estático:

    using System.Collections.Generic;
    using System.Windows.Forms;
    ...
    public class MiClase
    {
        public static List<Form> FormulariosAbiertos = new List<Form>();
        ...
    }

    Después, en donde abras cada formulario, lo añades a la lista. Por ejemplo, si abres un formulario asi:

    Form2 frm = new Form2();
    frm.Show();

    pues entonces lo cambias asi:

    Form2 frm = new Form2();
    MiClase.FormulariosAbiertos.Add(frm);
    frm.Closed+=delegate { MiClase.FormulariosAbiertos.Remove(frm); };
    frm.Show();

    Y cuando quieras restaurarlos todos:

    foreach (Form f in miClase.FormulariosAbiertos)
    {
        f.WindowState = FormWindowState.Normal;
    }
    • Marcado como respuesta Aivalo lunes, 5 de abril de 2010 11:49
    lunes, 5 de abril de 2010 11:32
    Moderador

Todas las respuestas

  • ¿Es una aplicación MDI? En ese caso, hay un comando sencillo que puedes ejecutar en el contenedor MDI para restaurar todos los formularios hijos:

    this.LayoutMdi(MdiLayout.Cascade);

    Por el contrario, si es un SDI (es decir, todos los formularios son independientes), la cosa no es tan sencilla. Al irlos abriendo, puedes guardar una referencia a cada formulario abierto, por ejemplo, metiéndolos en un List<Form> estático. Para restaurarlos todos, recorres la lista con un bucle y vas cambiando el WindowState de cada uno.

     

    lunes, 5 de abril de 2010 9:44
    Moderador
  • Se trata de una SDI. El problema es ir guardando esa referencia desde cada formulario. Tengo una clase globales a la cual puedes acceder desde todos los formularios. el problema es k no me permite declarar  un List<> cuando declaro las variables, no se porque razon.

    public static class Globales
        {

            public static int NumJugadores;
            public static string IdPruebaActual;
            public static string IdPlantillaActual;
            public static string PruebaOrden;
            public static int RondaActual

     

    }

    • Editado Aivalo lunes, 5 de abril de 2010 11:37
    lunes, 5 de abril de 2010 11:17
  • Bueno, pues si es una SDI, recurres a guardar los formularios y cambiarles el WindowState. por ejemplo, en una clase cualquiera de tu proyecto declaras un List<Form> estático:

    using System.Collections.Generic;
    using System.Windows.Forms;
    ...
    public class MiClase
    {
        public static List<Form> FormulariosAbiertos = new List<Form>();
        ...
    }

    Después, en donde abras cada formulario, lo añades a la lista. Por ejemplo, si abres un formulario asi:

    Form2 frm = new Form2();
    frm.Show();

    pues entonces lo cambias asi:

    Form2 frm = new Form2();
    MiClase.FormulariosAbiertos.Add(frm);
    frm.Closed+=delegate { MiClase.FormulariosAbiertos.Remove(frm); };
    frm.Show();

    Y cuando quieras restaurarlos todos:

    foreach (Form f in miClase.FormulariosAbiertos)
    {
        f.WindowState = FormWindowState.Normal;
    }
    • Marcado como respuesta Aivalo lunes, 5 de abril de 2010 11:49
    lunes, 5 de abril de 2010 11:32
    Moderador
  • De acuerdo, muchas gracias por tu ayuda.
    lunes, 5 de abril de 2010 11:49