如何使用vb.net在面板中移动图片框

时间:2015-07-10 08:48:30

标签: vb.net picturebox

我试图在面板中移动图片框。

这是我的代码:

Private dragging As Boolean
Private beginX, beginY As Integer

Private Sub Control_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        dragging = True
        beginX = CType(sender, PictureBox).Location.X
        beginY = CType(sender, PictureBox).Location.Y
End Sub

Private Sub Control_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        Dim cntrl As Control = CType(sender, Control)
        If dragging = True Then
            cntrl.Location = New Point(cntrl.Location.X + e.X - beginX, cntrl.Location.Y + e.Y - beginY)
            'Me.Refresh()
        End If
End Sub

Private Sub Control_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        dragging = False
End Sub

我无法弄清楚为什么这不起作用。

2 个答案:

答案 0 :(得分:0)

您拥有的子程序最后会丢失其处理程序(即handles语句)。

前:

Private Sub Control_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) HANDLES controlName.MouseUp
    dragging = False
End Sub

答案 1 :(得分:0)

试试这个:

    Dim cmd As Boolean = False     
    Dim sp As Point
    Private Sub Form1_Load() Handles MyBase.Load 
        For Each Control As Picturebox In Me.Controls.OfType(Of Picturebox)
        AddHandler Control.MouseDown, Sub(sender As Object, e As MouseEventArgs)
                                          cmd = True
                                          sp = e.Location
                                      End Sub
        AddHandler Control.MouseMove, Sub(sender As Object, e As MouseEventArgs)
                                          If cmd Then
                                              Control.Location = Control.Location - sp + e.Location
                                          End If
                                      End Sub
        AddHandler Control.MouseUp, Sub(sender As Object, e As MouseEventArgs)
                                        cmd = False
                                    End Sub 
        Next
    End Sub
相关问题