Как я могу щелкнуть элемент управления и перетащить (не перетаскивать) из него, но все еще следить за событием, пока нажата кнопка? - PullRequest
1 голос
/ 15 марта 2010

Я бы хотел, чтобы пользователь мог щелкнуть внутри моего UserControl и перетащить влево / вправо для увеличения / уменьшения, но я бы хотел, чтобы перетаскивание не ограничивалось фактическими границами элемента управления. Какое событие или стратегия будет правильным способом отслеживания положения мыши вне элемента управления и формы до тех пор, пока не будет отпущен щелчок мыши?

Заранее спасибо за любую помощь или совет.

Ответы [ 2 ]

3 голосов
/ 15 марта 2010

Установите для свойства Capture значение true в обработчике события MouseDown.Вы будете получать сообщения 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);
    }
  }
0 голосов
/ 15 марта 2010

Я думаю, что вы после Mouse.Capture , или что-то подобное.

...