none
como puedo recargar un while RRS feed

  • Pregunta

  • Explico lo que me pasatengo 12 imagenes que se leen de una base de datos.

    pero el problema es el siguiente

    puse un while para que se cargen las imagenes en pictureBox1.image, pictureBox2.Image,...,pictureBox12.image

    uso este fragmento de codigo que funcion

    while (rdr.Read())
                        {
                            byte[] a = (System.Byte[])rdr[0];
                            pictureBox1.Image = ByteToImage(a);
                        }

    funciona bien pero solo cargo el pictureBox1.Image, como puedo remplazar esa linea para que en cada vuelta del ciclo pase pictureBox2, luego 3, luego 4, etc.

    Gracias

    lunes, 20 de enero de 2020 16:53

Todas las respuestas

  • Necesitas hacer algo como esto

    using (var img = new Bitmap(imagen))
    {
       
    Picturebox1.Image = new Bitmap(img);
    }

    para que se liberen los recursos de tu imagen y la puedas volver a usar


    Ing. Carlos Monroy

    lunes, 20 de enero de 2020 17:19
  • hola

    >>como puedo remplazar esa linea para que en cada vuelta del ciclo pase pictureBox2, luego 3

    vas a tener que acceder al control de forma dinamica

    var pictureboxs = this.Controls.OfType<PictureBox>();
    
    int index = 1;
    
    while(rdr.Read()){
    
          byte[] a = (System.Byte[])rdr[0];
    
          PictureBox pic = pictureboxs.FirstOrDefault(x=> x.Name == string.Format("PictureBox{0}", index));
    
          if(pic != null){
               pic.Image = ByteToImage(a);
          }
    
    }

    con la ayuda de linq puedes buscar en la coleccion de controles, en este caso solo de picturebox por su nombre de forma dinamica

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 20 de enero de 2020 18:16
  • Hola,

    ¿Que tal así?

    int contador = 1
    while (rdr.Read())
    {
       string nombrecontrol = String.Format("pictureBox{0}",contador); 
       byte[] a = (System.Byte[])rdr[0];
       this.Controls[nombrecontrol].Image = ByteToImage(a);
       contador ++
    }
    Suponiendo que se cargan el mismo numero de imágenes que pictureBox tienes


    Es de buena educación dar las gracias cuando te ayudan, si alguna respuesta te ha sido de utilidad agradécelo marcándola como útil.&lt;br/&gt; &lt;
    Blog




    lunes, 20 de enero de 2020 19:27