控件或窗体移动后坐标=控件实时坐标+内部鼠标坐标-移动前鼠标坐标
Dim pointStart As Point = Nothing
Private Sub 控件名(窗体名)_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 控件名(窗体名).MouseDown
With pointStart
.X = e.X
.Y = e.Y
End With
End Sub
Private Sub 控件名(窗体名)_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 控件名(窗体名).MouseMove
If pointStart.X > 0 Then Me.Location = Me.Location + e.Location - pointStart
End Sub
Private Sub 控件名(窗体名)_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 控件名(窗体名).MouseUp
pointStart = Nothing
End Sub

本文介绍了一种在Windows Forms中实现控件或窗体拖动的方法,通过记录鼠标按下时的位置,然后在鼠标移动时更新控件位置,实现平滑的拖动效果。关键代码包括MouseDown、MouseMove和MouseUp事件的处理。
660

被折叠的 条评论
为什么被折叠?



