捕获的元素的鼠标事件在拖动时停止触发

时间:2016-04-08 07:02:18

标签: c# wpf drag-and-drop mouseevent mousecapture

我有一些代码可以在屏幕上绘制一些点,然后在按住鼠标左键的同时拖动它们。除了不断地鼠标事件停止发射并且被拖动的点停止移动之外,这种方式有效。

因为所有事件都被捕获(由于某种未知原因),这意味着用户可以释放鼠标左键而不会发生任何事情。

奇怪的是,用户可以将鼠标重新定位在该点上,并且无需按住鼠标左键即可再次开始拖动。这会给用户带来非常糟糕的体验。

发生了什么事?

pinPoint.MouseLeftButtonDown += Point_MouseLeftButtonDown;
pinPoint.MouseLeftButtonUp += Point_MouseLeftButtonUp;
pinPoint.MouseMove += Point_MouseMove;

.
.
.

void Point_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    ((UIElement)sender).CaptureMouse();
    if (_isDragging == false)
    {
        _isDragging = true;
    }
}

void Point_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    _isDragging = false;
    ((UIElement)sender).ReleaseMouseCapture();
}

void Point_MouseMove(object sender, MouseEventArgs e)
{
    //where the point gets moved and some other logic
    //possibly this logic takes too long?
}

0 个答案:

没有答案