-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 に答える