-1

现在我有一个 mousedown 事件触发,同时我也想触发我的 mousemove 事件。但是这样做:this.capture = false;将触发所有鼠标事件。我想要的只是在鼠标按下事件触发时触发鼠标移动事件(特定事件);

思考的方法是。我希望在触发事件 A 时触发事件 B(不是任何事件)

我想到了多线程。但是我没有足够的关于多线程的信息来继续做。因此,如果这是需要做的,任何人都可以为我提供一些编码供我参考吗?非常感谢您的阅读。


而且我知道你们在想什么:“为什么不直接在 mousedown 中调用鼠标移动事件” 好吧,我试过这样做,但是 mouseeventarg 没有更新,换句话说,鼠标移动的鼠标位置仍然保持不变一个恒定的位置,因为在我的情况下捕获仍然是正确的。

4

2 回答 2

1

可能发生的情况是,由于您正在移动控件,因此鼠标相对于控件的位置是恒定的,这就是 mouseeventarg 不更新的原因。在 MouseDown 上,您应该保存控件的初始位置,并且在调用 MouseMove 时,您应该将 currentPosition.Left - initialPosition.Left 添加到鼠标 X,并将 .Top 用于 Y。

触发事件时,创建一个新的 MouseEventArgs 对象:

int newX = oldMea.X + Control.Left - initialPosition.Left;
int newY = oldMea.Y + Control.Top - initialPosition.Top;
var newMea = new MouseEventArgs(oldMea.Button, newX, newY, oldMea.Delta);
于 2012-08-02T03:11:53.043 回答
0

我是怎么做到的,我使用另一个计时器来替换鼠标移动事件,我简单地使用全局屏幕鼠标位置来定位鼠标按下事件期间我想要的任何位置,这可以模拟鼠标拖动动作。是的,我也许应该在我的代码开头使用鼠标拖动。感谢大家的帮助。

于 2012-08-07T04:37:17.843 回答