我怎么能在控件中单击并拖动(而不是拖放),但只要单击按钮,它仍然会跟踪事件?

时间:2010-03-15 09:12:24

标签: c# winforms events click drag

我想允许用户在我的UserControl中单击并向左/向右拖动以放大/缩小,但我希望拖动不限于实际控件的边界。 在释放鼠标单击之前,哪种事件或策略是跟踪控件和表单外部鼠标位置的正确方法?

提前感谢您的任何帮助或建议。

2 个答案:

答案 0 :(得分: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);
    }
  }

答案 1 :(得分:0)

我认为你是在Mouse.Capture之后,或类似的东西。