1

ユーザーが UserControl 内をクリックして左右にドラッグしてズームイン/ズームアウトできるようにしたいのですが、ドラッグが実際のコントロールの境界に制限されないようにしたいと思います。マウスのクリックが解放されるまで、コントロールとフォームの外でマウスの位置を追跡する正しい方法は、どのようなイベントまたは戦略ですか?

ヘルプやアドバイスをお寄せいただきありがとうございます。

4

2 に答える 2

3

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);
    }
  }
于 2010-03-15T11:45:20.170 に答える
0

あなたはMouse.Captureなどを追いかけていると思います。

于 2010-03-15T10:34:51.173 に答える