Pardonnez-moi si c'est une question stupide, mais je ne suis pas expérimenté et je n'ai pas trouvé de réponse à ce problème.WinForms Glisser-déposer: Etiquettes "sauter" avant de suivre la souris
Je mets des étiquettes sur un panneau (Form8.Panel1) dans le code en fonction des données stockées dans une table de données (treedata):
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
Utilisation de l'événement MouseMove je veux faire glisser les étiquettes autour de la panneau suivant la souris:
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
ce qui se passe maintenant est que lorsque je clique sur une étiquette et que vous souhaitez pour suivre la souris d'abord « saute loin » signifie se déplace tout à fait un peu loin de l'emplacement de la souris et seulement puis suit la souris. Est-ce que quelqu'un sait ce que je dois changer afin d'éviter ce saut initial des étiquettes?
'MousePosition' n'est pas ce que vous voulez, vous devez traduire ces coordonnées en coordonnées de contrôle. – DonBoitnott
Quelque chose comme ceci: https://stackoverflow.com/questions/28531058/find-position-of-mouse-relative-to-control-rather-than-screen#28533224. La partie sur 'PointToClient' pourrait être la plus pertinente. – DonBoitnott
Merci, j'ai compris! – dunkleosteus