【发布时间】: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