private void treeView_DragDrop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(typeof(TreeNode))) { Point pt = treeView.PointToClient(new Point(e.X, e.Y)); TreeNode target = treeView.GetNodeAt(pt); TreeNode source = (TreeNode)e.Data.GetData(typeof(TreeNode)); if (target == null || target == source) { return; } if (!(source.Tag is TreeNodeBuilder)) { return; } if (!(target.Tag is TreeNodeBuilder)) { return; } if (IsChildNode(source, target)) { return; } TreeNodeBuilder targetBuilder = (TreeNodeBuilder)target.Tag; TreeNodeBuilder sourceBuilder = (TreeNodeBuilder)source.Tag; Core.Breath.Increment(); Core.IEntryCollection dst = targetBuilder.SubEntries; Core.IEntry src = (Core.IEntry)sourceBuilder.Tag; CopyEntry(src, dst); src.Owner.Remove(src.ID); SI.Commit(); } }
static void CopyEntry(Core.IEntry src, Core.IEntryCollection dst) { dst = dst.Put(src.Entity).Entries; foreach (Core.IEntry e in src.Entries) { CopyEntry(e, dst); } }
public DocTreeNodeCollection( Core.IEntryCollection entries, TreeNodeCollection nodes) { _entries = entries; _nodes = nodes; }