示例#1
0
        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();
            }
        }
示例#2
0
 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;
 }