Buenas, tengo el siguiente problema:
Estoy intentando crear varios PictureBox desde código, pero al ejecutar el programa veo que me crea todos los PictureBox , pero solo aparece uno...
tengo hecho que entre cada PictureBox deje 200px de distancia respecto al anterior, pero sigue apareciéndome solo uno.
PD: la ruta de imagen es correcta
Aquí les dejo el código:
For j = 0 To i - 1
Dim pcb As New PictureBox
pcb.Visible = True
pcb.ImageLocation = Path_imagenes(j)
pcb.Height = 150
pcb.Width = 150
pcb.Tag = Producto(j)
If contador_fil > 3 Then
contador_fil = 1
pos_y = pos_y + 200
End If
If contador_fil = 1 Then
pos_x = 0
End If
If contador_fil = 2 Then
pos_x = 200
End If
If contador_fil = 3 Then
pos_x = 400
End If
pcb.Location = New Point(pos_x, pos_y)
frmProductos.Controls.Add(pcb)
Next
El fallo lo tienes en esta comprobación:
If contador_fil > 3 Then
contador_fil = 1
pos_y = pos_y + 200
End If
Si el contador es mayor que tres, tu cambias el valor a 1 y sumas la variable pos_y,
por lo tanto el valor de pos_y siempre será el mismo en todos los ciclos del búcle porque "contador_fil" siempre será "1", así que la comprobación donde sumas el valor de "pos_y" nunca se vuelve a comprobar/sumar...
Fíjate como así sí que funciona:
Dim pos_x As Integer = 0
Dim pos_y As Integer = 0
Dim contador_fil As Integer = 4
For j = 0 To 5 ' i - 1
Dim pcb As New Button
pcb.Height = 150
pcb.Width = 150
If contador_fil > 3 Then pos_y += 200
If contador_fil = 1 Then : pos_x = 0
ElseIf contador_fil = 2 Then : pos_x = 200
ElseIf contador_fil = 3 Then : pos_x = 400
End If
MsgBox(pos_y)
pcb.Location = New Point(pos_x, pos_y)
Me.Controls.Add(pcb)
Next
Saludos.
otra cosa es que no hace falta hacer tantos if si vas a hacer una cuadricula, imaginte que seria una cuadricula de 500, tendrias que hacer 500 if, simplemente usa una variable que se vaya reseteando cada tantos items y operacion matematicas dentro del New Pont().
Okey, muchisimas gracias, ahora me funciona, le añadi tu codigo y un cont_fil +=1 ya que se me habia olvidado ponerselo :)