Generación de imagenes con ID VB.NET

babri

Estoy haciendo un sistema de favoritos que tira de la base de datos favoritos. En dicha bbdd tengo un id_favoritos. Entonces si salen por ejemplo 16 resgistros he de pintar 16 labels 16 imagenes de quitar fav y 16 imagenes de abrir fav y eso ya lo tengo hecho así:

While r.Read()
                nombre_cliente = r(1).ToString()
                nombre_proyecto = r(2).ToString()

            'MsgBox(nombre_proyecto)

            labelFavorito = New System.Windows.Forms.Label
            labelFavorito.Text = (nombre_cliente)
            labelFavorito.Location = New System.Drawing.Point(x, y)
            labelFavorito.Size = New System.Drawing.Size(150, 13)
            labelFavorito.ForeColor = Color.Black
            labelFavorito.BackColor = Color.Transparent
            labelFavorito.Visible = True

            labelFavorito2 = New System.Windows.Forms.Label
            labelFavorito2.Text = nombre_proyecto
            labelFavorito2.Location = New System.Drawing.Point(x, yDOS)
            labelFavorito2.Size = New System.Drawing.Size(150, 13)
            labelFavorito2.ForeColor = Color.Black
            labelFavorito2.BackColor = Color.Transparent
            labelFavorito2.Visible = True

            Static valor As Integer

            quitarFav = New System.Windows.Forms.PictureBox
            quitarFav.Image = My.Resources.minimizar
            quitarFav.Name = r(0).ToString()
            quitarFav.Location = New System.Drawing.Point(xImagen1, y)
            quitarFav.Size = New System.Drawing.Size(23, 23)
            quitarFav.Visible = True
            quitarFav.Tag = valor
            AddHandler quitarFav.Click, AddressOf borrarFav
            valor += 1

            arrancarFav = New System.Windows.Forms.PictureBox
            arrancarFav.Image = My.Resources._3
            arrancarFav.Location = New System.Drawing.Point(xImagen2, y)
            arrancarFav.Size = New System.Drawing.Size(23, 23)
            arrancarFav.Visible = True

            Me.Controls.Add(labelFavorito)
            Me.Controls.Add(labelFavorito2)
            Me.Controls.Add(quitarFav)
            Me.Controls.Add(arrancarFav)

            y = y + 35
            yDOS = yDOS + 35
            i = i + 1
        End While

Como veis quitarFav le voy asignando el id_favorito por vuelta de esta forma cuando le haga click hacer un delete de dicho id. Pero cuando hago una prueba a ver que id tiene siempre me sale el último ID del ultimo registro en mi caso que es el registro 36.

Le hice un punto de corte y fui vuelta a vuelta viendo que hace entonces el ID lo asigna bien pero cuando tiene uqe pintar el componente osea se aqui:

Me.Controls.Add(quitarFav)

No lo pinta y espera a la ultima vuelta para pintar todos de golpe, de esta forma siempre asigna el mismo ida todos :(

¿Alguna solución para arreglar esto?

babri

Solucionado haciendo un DirectCast

Dim prueba = DirectCast(sender, PictureBox)
        Dim id As String = prueba.Name

Usuarios habituales

  • babri