質問

ShowDialogメソッドでモーダルフォームを開くアプリケーションがあります。 このフォームが表示されたら、カーソルがフォームの外にある場合でも、マウスの動きをキャプチャします。 マウスの動きをキャプチャするにはどうすればよいですか? Captureプロパティで何かを見ましたが、うまく機能させることができません。

[編集]

マウスがフォームの外側に移動した場合に通知を受け取りたい。

役に立ちましたか?

解決

Capture プロパティは正しい方法ですが、いくつかの制限があります。

  • 前景ウィンドウのみがマウスをキャプチャできます
  • マウスキャプチャは、システムの他の部分によって無効にすることができます
  • Win32 API関数 SetCapture は、「マウスアップ」が行われるたびにリセットされます。イベントが発生します。これは.NETにも当てはまると思います。

備考セクション Capture プロパティ。

マウスがキャプチャされると、通常のイベントを受け取りますが、マウスの座標範囲はより広くなります(たとえば、マウスがキャプチャコントロールの左側にある場合、負のX位置)

マウスキャプチャはグローバルな性質があるため、脆弱です。特定のイベントを処理する他の方法があるかどうかを確認します。おそらく、 MouseLeave または MouseEnter イベントで十分です。

他のヒント

Cursor.Positionプロパティを使用して、カーソルの位置を読み取ることができます。 Cursor.Position

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top