2010-03-15 4 views
1

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

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

ответ

3

Установите для свойства 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

Блестящий. Спасибо, благородный, и спасибо Дугласу. –