Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Patxiku69 en 19 Enero 2013, 18:53 pm



Título: Problema al crear varios picturebox vía codigo
Publicado por: Patxiku69 en 19 Enero 2013, 18:53 pm
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:

Código
  1. For j = 0 To i - 1
  2.            Dim pcb As New PictureBox
  3.            pcb.Visible = True
  4.            pcb.ImageLocation = Path_imagenes(j)
  5.            pcb.Height = 150
  6.            pcb.Width = 150
  7.            pcb.Tag = Producto(j)
  8.            If contador_fil > 3 Then
  9.                contador_fil = 1
  10.                pos_y = pos_y + 200
  11.            End If
  12.            If contador_fil = 1 Then
  13.                pos_x = 0
  14.            End If
  15.            If contador_fil = 2 Then
  16.                pos_x = 200
  17.            End If
  18.            If contador_fil = 3 Then
  19.                pos_x = 400
  20.            End If
  21.            pcb.Location = New Point(pos_x, pos_y)
  22.            frmProductos.Controls.Add(pcb)
  23.        Next
  24.  


Título: Re: Problema al crear varios picturebox vía codigo
Publicado por: Eleкtro en 19 Enero 2013, 19:12 pm
El fallo lo tienes en esta comprobación:

Código
  1.            If contador_fil > 3 Then
  2.               contador_fil = 1
  3.               pos_y = pos_y + 200
  4.           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:

Código
  1.        Dim pos_x As Integer = 0
  2.        Dim pos_y As Integer = 0
  3.        Dim contador_fil As Integer = 4
  4.  
  5.        For j = 0 To 5 ' i - 1
  6.            Dim pcb As New Button
  7.            pcb.Height = 150
  8.            pcb.Width = 150
  9.            If contador_fil > 3 Then pos_y += 200
  10.            If contador_fil = 1 Then : pos_x = 0
  11.            ElseIf contador_fil = 2 Then : pos_x = 200
  12.            ElseIf contador_fil = 3 Then : pos_x = 400
  13.            End If
  14.                MsgBox(pos_y)
  15.                pcb.Location = New Point(pos_x, pos_y)
  16.                Me.Controls.Add(pcb)
  17.        Next

Saludos.


Título: Re: Problema al crear varios picturebox vía codigo
Publicado por: seba123neo en 19 Enero 2013, 19:17 pm
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().


Título: Re: Problema al crear varios picturebox vía codigo
Publicado por: Patxiku69 en 19 Enero 2013, 19:21 pm
Okey, muchisimas gracias, ahora me funciona, le añadi tu codigo y un cont_fil +=1 ya que se me habia olvidado ponerselo :)