none
Ordenar componentes RRS feed

  • Pregunta

  • Hola a todos .. Tengo un Winform en el k hago una buskeda de un tipo de componente en este caso picturebox y los guardo en un arreglo. Ahora por cuestiones de diseño cada picturebox representan una posicion del 1 al 10 (es decir k tengo 10 picturebox) lo que necesito es k cuando los guarde en el arreglo se guarden ordenadamente es decir

    Arrg[0] = picturebox1 y asi sucesivamente se puede hacer eso ?

    este es el metodo k tengo para llenar el arreglo

    private PictureBox[] Obtener_PictureBox(Form form, string nombre_estufa)
            {
                int cont = 0;
                PictureBox[] picturebox = new PictureBox[10];
                foreach (GroupBox gb in form.Controls.OfType<GroupBox>())
                {
                    if (gb.Text==nombre_estufa)
                    {
                        foreach (Panel panel in gb.Controls.OfType<Panel>())
                        {
                            foreach (PictureBox pb in panel.Controls.OfType<PictureBox>())
                            {
                                picturebox[cont]= pb;
                                cont++;
                            }
                        }
                    }
                }
                return picturebox;
            }

    • Editado jlpavon1987 viernes, 8 de junio de 2018 20:22
    viernes, 8 de junio de 2018 20:17

Respuestas

  • Según entiendo, tiene 10 PictureBoxes, y sus nombres son pictureboxN, donde N es un número del 1 al 10, y justamente ese número es el número que desea utilizar para acomodar los pb's en el arreglo.

    Asumiendo que entendí correctamente:

    PictureBox[] pbs = new PictureBox[10];
    Regex rx = new Regex(@"picturebox(\d+)");
    foreach (GroupBox gb in form.Controls.OfType<GroupBox>())
    {
        if (gb.Text == nombre_estufa)
        {
            foreach (Panel panel in gb.Controls.OfType<Panel>())
            {
                foreach (PictureBox pb in panel.Controls.OfType<PictureBox>())
                {
                    Match m = rx.Match(pb.Name);
                    if (!m.Success) continue; //No hubo coincidencia.
                    int num = Int32.Parse(m.Groups[1].Value);
                    pbs[num - 1] = pb;
                }
            }
        }
    }
    return pbs;


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    • Marcado como respuesta jlpavon1987 lunes, 11 de junio de 2018 13:39
    viernes, 8 de junio de 2018 20:39
    Moderador

Todas las respuestas

  • Según entiendo, tiene 10 PictureBoxes, y sus nombres son pictureboxN, donde N es un número del 1 al 10, y justamente ese número es el número que desea utilizar para acomodar los pb's en el arreglo.

    Asumiendo que entendí correctamente:

    PictureBox[] pbs = new PictureBox[10];
    Regex rx = new Regex(@"picturebox(\d+)");
    foreach (GroupBox gb in form.Controls.OfType<GroupBox>())
    {
        if (gb.Text == nombre_estufa)
        {
            foreach (Panel panel in gb.Controls.OfType<Panel>())
            {
                foreach (PictureBox pb in panel.Controls.OfType<PictureBox>())
                {
                    Match m = rx.Match(pb.Name);
                    if (!m.Success) continue; //No hubo coincidencia.
                    int num = Int32.Parse(m.Groups[1].Value);
                    pbs[num - 1] = pb;
                }
            }
        }
    }
    return pbs;


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    • Marcado como respuesta jlpavon1987 lunes, 11 de junio de 2018 13:39
    viernes, 8 de junio de 2018 20:39
    Moderador
  • gracias por tu ejemplo pero creo que es un poco mas complicado k eso el problema es k en verdad tengo 10 picturebox por paneles y tengo 5 panales y c me ocurrio porner el nombre de los pb de acuerdo al panel en k estan por ejemplo pg1_1 signifca que esta en el panel 1 y es el primer picturebox y asi hasts pb5_10 panel 5 ultimo picturebox. Estuve pensando y habrá alguna forma de organizarlos por su TabIndex ?? es decir de k se vale el lenguaje para meter los picturebox en el orden k los organiza ??
    lunes, 11 de junio de 2018 13:30
  • Amigo muchas gracias pero ya resolvi me di cuenta que el orden en el arreglo coincidia con el orden de creacion en el codigo y por los TabIndex vi que se organizaban de mayor a menor es decir el ultimo pb tenia mayor tab index k el anterior y en el arreglo me los guardaba de mayor a menor lo k hice fue en el metodo agregar un Array.Reverse(picturebox) y problema resuelto muchas gracias por tu ayuda se agradece
    lunes, 11 de junio de 2018 13:54