我使用 MouseMove 事件来移动对象(比如标签)。
简单原理(示意图):
OnMouseMove(e MouseEventArgs)
if e.Button == Left
deltaX = e.X - lastX
foreach label in labels
label.Location.X += deltaX
lastX = e.X
一旦标签数量增加,我开始看到标签沿着移动轨迹的轨迹。我有类似 III II III II II III II 的东西,但想要有类似 IIII 的东西作为痕迹。我想知道鼠标什么时候“开始”和“停止移动”这样的东西。
我沿着水平轴移动标签。MouseDown
(设置 LastX)然后继续。没有人知道什么时候停止,只有鼠标移动的感觉。当然,我可以MouseUp
用来知道移动何时结束,但是如果用户按住按钮并停止移动,我想反映最新的标签位置。
有没有办法防止这种痕迹?
试过了
label.Visible = false
label.Location.X += deltaX
label.Visible = true
没有帮助。
parent.SuspendLayout 和 ResumeLayout 并没有太大帮助,因为我需要在每次鼠标移动时都这样做,所以任何效果。