Как реализовать перетаскивание с небольшого хоста WPF Element в приложении Winforms? - PullRequest
3 голосов
/ 15 марта 2011

В нашем приложении мы размещаем небольшой список WPF внутри хоста Element, мы реализуем перетаскивание с помощью события PreviewMouseDown ...

   private void Border_PreviewMouseMove(object sender, MouseEventArgs e)
        {
            // Get the current mouse position
            Point mousePos = e.GetPosition(null);
            Vector diff = startPoint - mousePos;

            if (e.LeftButton == MouseButtonState.Pressed &&
                Math.Abs(diff.X) > SystemParameters.MinimumHorizontalDragDistance &&
                Math.Abs(diff.Y) > SystemParameters.MinimumVerticalDragDistance)
            {
                OnDragStarted(e);                
            } 

        }

Проблема, с которой мы сталкиваемся, заключается в том, что когда я довольно быстро щелкаю и перетаскиваю элемент, элемент управления WPF запускает только одно событие PreviewMouseMove, прежде чем мышь покидает Elementhost, поэтому операция перетаскивания не запускается до тех пор, пока мышь не будет возвращена Elementhost. и возникает другое событие PreviewMouseMove.

Есть ли надежный способ обработки этого дела?

1 Ответ

2 голосов
/ 15 марта 2011

Вы должны захватить мышь на событие мыши вниз.Любая мышь, перемещающаяся после этого, всегда направляется к вашему окну, даже если курсор больше не наводит на него курсор.Используйте метод Mouse.Capture () в WPF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...