質問
ShowDialogメソッドでモーダルフォームを開くアプリケーションがあります。 このフォームが表示されたら、カーソルがフォームの外にある場合でも、マウスの動きをキャプチャします。 マウスの動きをキャプチャするにはどうすればよいですか? Captureプロパティで何かを見ましたが、うまく機能させることができません。
[編集]
マウスがフォームの外側に移動した場合に通知を受け取りたい。
解決
Capture
プロパティは正しい方法ですが、いくつかの制限があります。
- 前景ウィンドウのみがマウスをキャプチャできます
- マウスキャプチャは、システムの他の部分によって無効にすることができます
- Win32 API関数
SetCapture
は、「マウスアップ」が行われるたびにリセットされます。イベントが発生します。これは.NETにも当てはまると思います。
備考セクション Capture
プロパティ。
マウスがキャプチャされると、通常のイベントを受け取りますが、マウスの座標範囲はより広くなります(たとえば、マウスがキャプチャコントロールの左側にある場合、負のX位置)
マウスキャプチャはグローバルな性質があるため、脆弱です。特定のイベントを処理する他の方法があるかどうかを確認します。おそらく、 MouseLeave
または MouseEnter
イベントで十分です。
他のヒント
静的プロパティを使用できます。 Control.MousePosition 。
Cursor.Positionプロパティを使用して、カーソルの位置を読み取ることができます。 Cursor.Position
所属していません StackOverflow