private void Surface_Drop(object sender, DragEventArgs e) { DrawBufLine.ReBuild(); var data = e; if (data.Handled == false) { var element = (BaseComponentUI)data.Data.GetData("ComponentUI"); if (element != null) { if (!element.Construct) { if (data.AllowedEffects.HasFlag(DragDropEffects.Move)) { data.Effects = DragDropEffects.Move; } //MoveAllLine(element); } else { if (data.AllowedEffects.HasFlag(DragDropEffects.Copy)) { CreateComponent(element.NameElement, e.GetPosition(sender as Canvas ?? throw new InvalidOperationException())); } } } } }
private void Surface_DragOver(object sender, DragEventArgs e) { var data = e; if (data.Handled == false) { var element = (BaseComponentUI)data.Data.GetData("ComponentUI"); if (data.Data.GetData("DataLine") != null) { var elementLine = (DataLine)data.Data.GetData("DataLine"); var bufPointPin = DrawBufLine.LastPin; var position = e.GetPosition(sender as Canvas ?? throw new InvalidOperationException()); bufPointPin.X = position.X - 2; bufPointPin.Y = position.Y - 2; if (elementLine.point0.Direction == EDirection.East) { bufPointPin.Direction = EDirection.West; } else { bufPointPin.Direction = EDirection.East; } DrawBufLine.ReBuild(elementLine.point0, bufPointPin); } if (element != null) { if (data.AllowedEffects.HasFlag(DragDropEffects.Move)) { var position = e.GetPosition(sender as Canvas ?? throw new InvalidOperationException()); element.oldPosition = new Point(element.Margin.Left, element.Margin.Top); element.Margin = new Thickness(Math.Max(0, position.X - element.relativeMouse.X), Math.Max(0, position.Y - element.relativeMouse.Y), 0, 0); data.Effects = DragDropEffects.Move; MoveAllLine(element); } var i = 0; } } }