Понятно, что это старый, но я наткнулся на этот пост, пытаясь сделать то же самое.Я думал, что может быть настоящее событие перетаскивания, но я думаю, нет.Вот как я это сделал.
Private Sub ContainerToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ContainerToolStripMenuItem.Click
Dim pnl As New Panel
pnl.Size = New Size(160, 160)
pnl.BackColor = Color.White
AddHandler pnl.MouseDown, AddressOf Control_DragEnter
AddHandler pnl.MouseUp, AddressOf Control_DragLeave
AddHandler pnl.MouseMove, AddressOf Control_Move
Me.Controls.Add(pnl)
End Sub
Private Sub Control_DragEnter(ByVal sender As Object, ByVal e As EventArgs)
MouseDragging = True
End Sub
Private Sub Control_DragLeave(ByVal sender As Object, ByVal e As EventArgs)
MouseDragging = False
End Sub
Private Sub Control_Move(ByVal sender As Object, ByVal e As EventArgs)
If MouseDragging = True Then
sender.Location = Me.PointToClient(Control.MousePosition)
End If
End Sub
ContainerToolStripMenuItem
взят из моей ToolStrip, которая добавляет панель на лету.MouseDragging
это уровень класса.Тащит как шарм.Кроме того, не используйте Cursor.Position
, поскольку он вернет позицию относительно всего окна, а не формы (или любого контейнера, в котором вы находитесь).