【问题标题】:While dragging rectangle object fast, dragging stops快速拖动矩形对象时,拖动停止
【发布时间】:2018-11-25 10:08:53
【问题描述】:

快速拖动矩形对象时,拖动停止并且光标只移动。在不释放按钮单击按钮的情况下,将光标移动到矩形对象上再次开始拖动。当我以恒定速度拖动时,它拖动很好。

我的代码是,

    private void ConnectorMethod()
    {
     _draggedLine = new Rectangle();
     _draggedLine.Width = 100;
     _draggedLine.Height = 12;
     _controlModel.PlayerCanvas.Children.Add(_draggedLine);
     _draggedLine.PreviewMouseLeftButtonDown += copy_Connector;
     _draggedLine.PreviewMouseLeftButtonUp += connector_leftUp;
    }

    private void copy_Connector(object sender, MouseButtonEventArgs e)
    {
        _connecting_Connector = (Rectangle)sender;
        _Connector_position = e.GetPosition(_connecting_Connector);
        _connecting_Connector.PreviewMouseMove += ConnectorMouseMove;

    }

    private void connector_leftUp(object sender, MouseButtonEventArgs e)
    {
        _connecting_Connector.PreviewMouseMove -= ConnectorMouseMove;
    }

    private void ConnectorMouseMove(object sender, MouseEventArgs e)
    {

        if (e.LeftButton == MouseButtonState.Pressed)
        {
            Point canvasRelativePosition = e.GetPosition(_controlModel.PlayerCanvas);
            Canvas.SetTop(_connecting_Connector, canvasRelativePosition.Y - _Connector_position.Y);
            Canvas.SetLeft(_connecting_Connector, canvasRelativePosition.X - _Connector_position.X);
            e.Handled = true;
        }
    }

提前致谢。

【问题讨论】:

  • 如果你拖得快,你会离开窗口吗?
  • 不,在窗口本身拖动停止
  • 嗯....据我所知,您做得对...
  • 你应该捕获鼠标。在鼠标按下时尝试 _connecting_Connector.CaptureMouse(); 并在鼠标按下时通过 _connecting_Connector.ReleaseMouseCapture(); 释放它
  • @Clemens 如果我使用该方法,我将无法移动我的矩形。

标签: c# .net wpf drag-and-drop wpf-controls


【解决方案1】:

我已经用实现画布矩形对象修复了它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多