Buongiorno a tutti,
con la porzione di codice sotto, disegno una "barra" che con il mouse posso trascinare all'interno di un panel e rimane ancorata all'interno di esso; per ragioni di spazio ho postato il codice di una sola barra, in realtà saranno molte di diverso colore che potrò trascinare nel panel e andranno ad accodarsi/ancorarsi sotto alle precedenti.....il mio problema è che vorrei poterle mettere ma anche eventualmente togliere (eliminare) dal panel, cioè se dopo averne messe un pò, mi accorgo che la sequenza è sbagliata vorrei poter intervenire eliminando quella/quelle sbagliate.....credo anzi sono certo di dover rifare tutto con un'altro approccio, vorrei solo qualche idea di massima su come approcciare.....grazie.
Dim PP1080 As PictureBox
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
PrePreg1080()
End Sub
Private Sub PrePreg1080()
PP1080 = New PictureBox
.....per PP1080 qui definisco .width=290, .height= 25, .left, .top, .cursor, .backcolor, .borderstyle ecc.
AddHandler PP1080.MouseDown, AddressOf PP1080MouseDown
AddHandler PP1080.MouseMove, AddressOf PP1080MouseMove
AddHandler PP1080.MouseUp, AddressOf PP1080MouseUp
Me.Controls.Add(PP1080)
End Sub
Private Sub PP1080MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
coord.Y = MousePosition.Y - sender.top
coord.X = MousePosition.X - sender.left
End Sub
Private Sub PP1080MouseMove(sender As Object, e As System.Windows.Forms.MouseEventArgs)
If e.Button = Windows.Forms.MouseButtons.Left Then
sender.top = MousePosition.Y - coord.Y
sender.left = MousePosition.X - coord.X
Dim pp_1080 As PictureBox = DirectCast(sender, PictureBox)
Panel1.SendToBack()
End If
End Sub
Private Sub PP1080MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs)
Dim pp_1080 As PictureBox = DirectCast(sender, PictureBox)
If pp_1080.Location.Y + pp_1080.Height() >= Panel1.Location.Y And
pp_1080.Location.Y + pp_1080.Height() <= Panel1.Location.Y + Panel1.Height() And
pp_1080.Location.X + pp_1080.Width() >= Panel1.Location.X And
pp_1080.Location.X + pp_1080.Width() <= Panel1.Location.X + PanelDrop.Width() Then
Me.Controls.Remove(PP1080)
Dim u As New PictureBox
pi.Width = 300
pi.Height = 30
pi.Left = 40
pi.Top = posizione
pi.Cursor = Cursors.SizeAll
pi.BackColor = Color.Brown
posizione=posizione += 35
Panel1.Controls.Add(pi)
PrePreg1080()
End If