Neither of these solutions work very well, they require you to override the KeyDown and KeyUp events and don't work well when the user presses Ctrl after he starts dragging.
The best fix would be for Syncfustion to add an option on the Diagram that enables or disables this Ctrl+Drag copy feature.
As a work-around that is better than the ones proposed above, try the following:
public class YourClass
{
private Diagram _diagram;
public YourClass()
{
this._diagram = new Diagram();
// Substitute our own SelectTool that modifies the MoveTool so that
// we never make copies of nodes when Ctrl+Dragging
Tool selectTool = (Tool)_diagram.Controller.GetTool("SelectTool");
_diagram.Controller.UnRegisterTool(selectTool);
CustomSelectTool customSelectTool = new CustomSelectTool(_diagram.Controller);
_diagram.Controller.RegisterTool(customSelectTool);
if (_diagram.Controller.ActiveTool is SelectTool)
{
_diagram.Controller.ActivateTool(customSelectTool);
}
}
public class CustomSelectTool : SelectTool
{
public CustomSelectTool(DiagramController controller)
: base(controller)
{
}
public CustomSelectTool(DiagramController controller, SelectMode selectMode)
: base(controller, selectMode)
{
}
protected override Tool PerformMove(MouseEventArgs evtArgs)
{
MoveTool moveTool = (MoveTool) base.PerformMove(evtArgs);
moveTool.DragCopyOffset = float.MaxValue;
return moveTool;
}
}
}
Syncfusion_Ctrl_Drag_Workaround_bfcf307c.zip