Quantcast
Channel: Visual Basic Tips and Tricks
Viewing all articles
Browse latest Browse all 2212

Picture riselezionabili

$
0
0

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

Dim coord As Point
Dim posizione As Integer = 10



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




Viewing all articles
Browse latest Browse all 2212