2votos

Concatenar variable con Objeto de VB

Muy buenas, mi pregunta es la siguiente

Tengo un bucle donde recojo un campo de una base de datos con un numero aleatorio y me devuelve una URL de una imagen es decir me devuelve "Titanic.jpg", esa imagen la concateno con una ruta de un servidor de FTP y se descargar esa imagen que se llama igual directamente a un PictureBox.

La duda:

Dentro del bucle cuando recupero la imagen llamo a una funcion FTP que la va a meter en el PictureBox pero siempre la mete en el mismo entonces tengo esto pero me dice que nanai y no se si esto es muy correcto

Llamada a la función:

  For i = 0 To 2
 "Conexion a la base de datos"
                    oDataAdapter.Fill(oTabla)
                    Imagen = oTabla.Rows(0).Item(i)
                    DescargarArchivoFTP(Imagen, i+1)
                Next

Lo que recibe la Funcion

 Public Sub DescargarArchivoFTP(ByVal NombreArchivo As String, ByVal Contador as Integer)
     Dim foto As String = "PictureBox" & Contador & ".ImageLocation"
     foto = "RUTA" & remoteFile 'URL de la imagen

Cómo podría hacer para que esto fuese capaz de ir cambiando de objeto en cada pasada del for?

1 Respuesta

3votos

carlossevi Puntos63580

A ver si te he entendido bien: quieres manipular un control con nombre definido por código, es decir, que no sabes todavía el nombre del control a manipular.

Puedes hacerlo utilizando el método ControlCollection.Find() de la clase Control. Un ejemplo:

Dim id as Integer = 1 '(Por ejemplo, para el PictureBox1)
Dim pbox as Control = Me.Controls.Find("PictureBox" & id, True)
pbox.Image = Image.FromFile("...")

0voto

oskar5445 comentado

Mil Gracias¡¡

0voto

oskar5445 comentado

Vale todo parecía funcionar hasta que he encontrado un error mas, es mas complicado de lo que parecía.
Quiero llamar a un PictureBox ya creado con una String, Tengo en la parte grafica dos PictureBox
PictureBox1 y PictureBox2, pero no me permiten llamarlo con una string ej.:

Dim pbox as String = "PictureBox"+Contador
pbox.ImageLocation="RUTA"

0voto

white comentado

No puedes tratar una cadena como una clase PictureBox, intentaste hacerlo como te propuso @carlossevi?

tambien puedes obtenerlo por su nombre desde: Me.Controls :

Dim pbox As PictureBox = CType(Me.Controls("PictureBox" & Contador), PictureBox)
pbox.ImageLocation="RUTA"

0voto

carlossevi comentado

Como te dice white, no puedes confundir un String con un PictureBox. Son diferentes clases y por lo tanto tienen diferentes propiedades y métodos. Puedes buscar más información sobre POO y VB.NET para aclarar conceptos.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta