1 private Point Position = new Point(00);
 2 
 3         private void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
 4         {
 5             DoDragDrop(e.Item, DragDropEffects.Move);
 6         }
 7 
 8         private void treeView1_DragEnter(object sender, DragEventArgs e)
 9         {
10             if (e.Data.GetDataPresent(typeof(TreeNode)))
11                 e.Effect = DragDropEffects.Move;
12             else
13                 e.Effect = DragDropEffects.None;
14         }
15 
16         private void treeView1_DragDrop(object sender, DragEventArgs e)
17         {
18             TreeNode myNode = null;
19             if (e.Data.GetDataPresent(typeof(TreeNode)))
20             {
21                 myNode = (TreeNode)(e.Data.GetData(typeof(TreeNode)));
22             }
23             else
24             {
25                 MessageBox.Show("error");
26             }
27             Position.X = e.X;
28             Position.Y = e.Y;
29             Position = treeView1.PointToClient(Position);
30             TreeNode DropNode = this.treeView1.GetNodeAt(Position);
31             // 1.目标节点不是空。2.目标节点不是被拖拽接点的字节点。3.目标节点不是被拖拽节点本身
32             if (DropNode != null && DropNode.Parent != myNode && DropNode != myNode)
33             {
34                 TreeNode DragNode = myNode;
35                 // 将被拖拽节点从原来位置删除。
36                 myNode.Remove();
37                 // 在目标节点下增加被拖拽节点
38                 DropNode.Nodes.Add(DragNode);
39             }
40             // 如果目标节点不存在,即拖拽的位置不存在节点,那么就将被拖拽节点放在根节点之下
41             if (DropNode == null)
42             {
43                 TreeNode DragNode = myNode;
44                 myNode.Remove();
45                 treeView1.Nodes.Add(DragNode);
46             }
47         }
posted on 2009-08-29 10:59  天涯海阁  阅读(458)  评论(0)    收藏  举报