none
¿Como asignar Propiedad de un objeto picture box creado mediante código? RRS feed

  • Pregunta

  • Hola a todos.
    Tengo el siguiente problema:

    Mediante programación se crean una serie de objetos contenedores, los que se generan dependiendo de una cantidad que devuelve una consulta.

    Se trata de varios contenedores (groupbox) que a su vez, cada uno de ellos contienen varios objetos panel (esto para dar la apariencia solicitada por el cliente).

    El resultado del código se muestra tal como esta imagen:

    al lado derecho de cada checkbox, por ejemplo "Indumax_Zn" y "Lactoplus" hay un picture box generado por código.
    Este picture box se encuentra dentro de un panel llamado "Panel Datos Arriba", contiene el check box y el picture box.
    el "PanelDatosArriba" a su vez se encuentra dentro de otro panel y así varias veces hasta su contenedor principal.

    Necesito recorrer los objetos contenidos en su respectivo contenedor y asignarle valores.  Para el caso del checkbox puedo reemplazar su propiedad text por el valor que necesito.

    Lo que no he podido lograr es asignarle a cada picture box la propiedad ImageLocation la que es distinta para cada Picture Box generado dinámicamente.

    el código que uso para recorrer los objetos y asignarles valores es el siguiente:

    ...

    Dim xPanelDatosArriba As Control For Each xPanelDatosArriba In xPanelDatos.Controls If TypeOf xPanelDatosArriba Is System.Windows.Forms.Panel Then If xPanelDatosArriba.Name = "PanelDatosArriba" & idEtapa Then 'Buscamos el CheckBox Dim xCheck As Control For Each xCheck In xPanelDatosArriba.Controls If TypeOf xCheck Is System.Windows.Forms.CheckBox Then 'ChkProducto If xCheck.Name = "ChkProducto" & idEtapa Then xCheck.Visible = True xCheck.Text = Producto End If End If Next 'Buscamos la imagen Dim xFoto As Control For Each xFoto In xPanelDatosArriba.Controls If TypeOf xFoto Is System.Windows.Forms.PictureBox Then If xFoto.Name = "FotoProducto" & idEtapa Then ''mostramos la imagen del producto Dim FotoProd As String = [Global].Business.Conexion.GetProducto(idProducto).UrlImagen 'AQUI EL PROBLEMA 'xFoto.ImageLocation = "http://www.URL..." End If End If Next End If End If Next

    Gracias por su atención y aportes.

    Saludos.


    Manuel Luengo Gaete

    jueves, 7 de mayo de 2015 17:44

Respuestas

  • La variable xFoto es de tipo Control, no de tipo PictureBox. Aunque tú sabes que el Control es en realidad un PictureBox, porque lo has verificado más arriba con el TypeOf, el compilador no es tan inteligente y no tiene esa información. Por lo tanto te da un error diciendo que el objeto Control no tiene la propiedad ImageLocation. Tienes que informar al compilador del tipo correcto mediante un "cast" con CType:

    CType(xFoto, PictureBox).ImageLocation = "http://www.URL..."

    jueves, 7 de mayo de 2015 18:03

Todas las respuestas

  • La variable xFoto es de tipo Control, no de tipo PictureBox. Aunque tú sabes que el Control es en realidad un PictureBox, porque lo has verificado más arriba con el TypeOf, el compilador no es tan inteligente y no tiene esa información. Por lo tanto te da un error diciendo que el objeto Control no tiene la propiedad ImageLocation. Tienes que informar al compilador del tipo correcto mediante un "cast" con CType:

    CType(xFoto, PictureBox).ImageLocation = "http://www.URL..."

    jueves, 7 de mayo de 2015 18:03
  • Muchas Gracias Alberto.  Resultó de inmediato.

    Atentamente,


    Manuel Luengo Gaete

    jueves, 7 de mayo de 2015 20:13