wpf: захват мыши не работает - PullRequest
0 голосов
/ 04 января 2010

Я занимаюсь разработкой своего рода календарного приложения Outlook, в котором мне нужно изменить размер встречи с помощью мыши. Моя первая попытка с большим пальцем не сработала, поэтому я попробовал другой способ.

То, что я сделал, это:

1) В нижней части панели назначения я добавил прямоугольник, чтобы определить зону изменения размера (большой палец). Панель назначения помещается на панель сетки. 2) Я перехватываю событие down на прямоугольнике и отправляю событие на этот код:

private Point startPoint;
private void OnResizeElementMouseDown(object sender, MouseButtonEventArgs e)
{
    e.Handled = true;
    this.MouseMove += new MouseEventHandler(ResizeEndElement_MouseMove);
    this.MouseLeftButtonUp += new MouseButtonEventHandler(OnResizeElementMouseUp);
    // some code to perform new height computation
    Mouse.Capture(this);
}

где это панель встреч, которой принадлежит большой палец.

Уменьшение высоты работает хорошо. Но увеличить сложнее. Если я очень медленно двигаю мышь, то все в порядке, если я немного ускоряю ее, это приводит к тому, что она пропускает панель встреч, и тогда все события MouseMove теряются.

Я думал, что Mouse.Capture () предлагал решить эту проблему, но на самом деле нет.

Кто-нибудь знает, что не так в моем коде?

Ответы [ 2 ]

1 голос
/ 05 января 2010

Вы должны использовать большой палец, но чтобы поиграть с захватом мыши, переопределите метод protected override void OnLostMouseCapture(MouseEventArgs e), тогда вы узнаете, потеряли ли вы захват.

1 голос
/ 04 января 2010

Вы должны использовать фактический Thumb элемент управления. Проверьте MSDN за помощью:

Как использовать большой палец для включения перетаскивания

...