在第一个鼠标事件已经触发时触发特殊鼠标事件

时间:2012-08-02 03:01:51

标签: c# .net winforms window

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

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

我想到多线程。但是我没有足够的关于多线程的信息来继续这样做。所以如果需要做的话,有人可以请我提供一些编码供我参考吗?非常感谢阅读。


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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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