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