ユーザーが UserControl 内をクリックして左右にドラッグしてズームイン/ズームアウトできるようにしたいのですが、ドラッグが実際のコントロールの境界に制限されないようにしたいと思います。マウスのクリックが解放されるまで、コントロールとフォームの外でマウスの位置を追跡する正しい方法は、どのようなイベントまたは戦略ですか?
ヘルプやアドバイスをお寄せいただきありがとうございます。
MouseDown イベント ハンドラーで Capture プロパティを true に設定します。マウスがクライアント領域を離れても、MouseMove メッセージを受け取り続けます。
public partial class UserControl1 : UserControl {
public UserControl1() {
InitializeComponent();
}
protected override void OnMouseDown(MouseEventArgs e) {
if (e.Button == MouseButtons.Left) this.Capture = true;
base.OnMouseDown(e);
}
protected override void OnMouseMove(MouseEventArgs e) {
if (e.Button == MouseButtons.Left) {
// Your dragging logic here...
Console.WriteLine(e.Location);
}
base.OnMouseMove(e);
}
}
あなたはMouse.Captureなどを追いかけていると思います。