See if this helps.
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'// when adding new row of controls, add a Handler for your PictureBoxRemove.
AddHandler PictureBoxRemove1.Click, AddressOf PictureBoxRemove_Click
'AddHandler PictureBoxRemove2.Click, AddressOf PictureBoxRemove_Click
'AddHandler PictureBoxRemove3.Click, AddressOf PictureBoxRemove_Click
End Sub
Private Sub PictureBoxRemove_Click(sender As System.Object, e As System.EventArgs)
'// get name of sender and remove the name except for the end #.
Dim sNumber As String = CType(sender, PictureBox).Name.Replace("PictureBoxRemove", "")
With Panel1 '// your Panel.
'// since you now have the # for the row, delete all controls that end w/that #.
.Controls.Remove(CType(.Controls("PictureBoxAdd" & sNumber), PictureBox))
.Controls.Remove(CType(.Controls("PictureBoxRemove" & sNumber), PictureBox))
.Controls.Remove(CType(.Controls("TextBox" & sNumber), TextBox))
.Controls.Remove(CType(.Controls("Button" & sNumber), Button))
End With
End Sub
End Class