WinForms拖放:标签"跳开"在跟随鼠标之前

时间:2017-09-05 13:31:21

标签: vb.net winforms drag-and-drop

请原谅我这是一个愚蠢的问题,但我没有经验,也没有找到这个问题的答案。

我根据存储在数据表(treedata)中的数据在代码中将标签放在Panel(Form8.Panel1)上:

    For i = 0 To _tree.treedata.Rows.Count - 1

        Dim tb As New Label

        tb.Name = CStr(i)

        tb.AutoSize = True
        tb.MaximumSize = New Size(tb.Width, 70)
        tb.MinimumSize = New Size(tb.Width, 0)

        tb.Location = New Point(treedata.Rows(i)(11),treedata.Rows(i)(4))

        AddHandler tb.MouseMove, AddressOf obj1_MouseMove
        AddHandler tb.MouseDown, AddressOf obj1_MouseDown

        Form8.Panel1.Controls.Add(tb)

    Next

使用MouseMove事件我想在鼠标后面板上拖动标签:

Private Sub obj1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)

    If e.Button = MouseButtons.Left Then
        sender.Location = New Point(Form8.MousePosition.X, Form8.MousePosition.Y)

    End If
End Sub

现在发生的事情是,当我点击一个标签并希望它首先跟随鼠标时,它会跳开"意思是移动离鼠标的位置相当远,然后只跟随鼠标。有没有人知道我必须改变什么才能避免标签的初始跳转?

1 个答案:

答案 0 :(得分:0)

原来很简单,只是MousePosition没有给出相对于面板的位置。这有效:

doc_values