private void ft_DragOverNode(object sender, FastTreeNS.DragOverItemEventArgs e) { var draggedNodes = (e.Data.GetData(typeof(HashSet <object>)) as HashSet <object>).ToList().Cast <Node>(); var targetNode = e.Tag as Node; //check if targetNode is child of draggedNodes foreach (var n in draggedNodes) { if (targetNode.IsChildOf(n) || n == targetNode) { return; } } // e.Effect = e.AllowedEffect; if (e.X > e.TextRect.Left + 50) { e.InsertEffect = FastTreeNS.InsertEffect.AddAsChild; } else if (e.Y < e.TextRect.Top + 10) { e.InsertEffect = FastTreeNS.InsertEffect.InsertBefore; } else { e.InsertEffect = FastTreeNS.InsertEffect.InsertAfter; } }
private void ft_DropOverNode(object sender, FastTreeNS.DragOverItemEventArgs e) { var draggedNodes = (e.Data.GetData(typeof(HashSet <object>)) as HashSet <object>).ToList().Cast <Node>(); var targetNode = e.Tag as Node; // switch (e.InsertEffect) { case FastTreeNS.InsertEffect.AddAsChild: AddChild(draggedNodes, targetNode); break; case FastTreeNS.InsertEffect.InsertBefore: InsertBefore(draggedNodes, targetNode); break; case FastTreeNS.InsertEffect.InsertAfter: InsertAfter(draggedNodes, targetNode); break; } ft.Build(root); }