Dim MousePos2 As Point '定义鼠标位置变量
Dim draging As Boolean = False
Dim DragRect As Rectangle
Private Sub Button2_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button2.MouseDown
If draging = False Then
draging = True
MousePos2 = New Point(MousePosition.X - Left - Button2.Left, MousePosition.Y - Top - Button2.Top) '鼠标点在按钮上时相对按钮的位置
MakeRect()
End If
End Sub
Private Sub MakeRect()
'new 方法的参数表示指定矩形区域的左上角位置和和大小(宽和高)
'ClientSize是工作区的大小()
DragRect = New Rectangle(Left + MousePos2.X, Top + MousePos2.Y, ClientSize.Width - Button2.Width, ClientSize.Height - Button2.Height) ‘这个区域就是按钮所能活动的最大区域.
End Sub
Private Sub Button2_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button2.MouseMove
If draging Then
If Me.MousePosition.X < DragRect.Left Then
Button2.Left = 0 '如果想要将其向左移动出窗体,则移动到左边缘
ElseIf MousePosition.X > DragRect.Right Then
Button2.Left = ClientSize.Width - Button2.Width '想向右移动出去,则移动到右边缘
Else
Button2.Left = MousePosition.X - Left - MousePos2.X
End If
If MousePosition.Y < DragRect.Top Then
Button2.Top = 0 '同理,向上移动也不允许超出上边界
ElseIf MousePosition.Y > DragRect.Bottom Then
Button2.Top = ClientSize.Height - Button2.Height '向下移动不可以超出下边界
Else
Button2.Top = MousePosition.Y - Top - MousePos2.Y
End If
End If
End Sub
Private Sub Button2_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button2.MouseUp
draging = False
End