TreeView控件的父节点的全选与不选级联子节点并实现拖动子节点

前段时间项目里老大安排要对弹出页面的树控件进行选择:

当选择父节点时,子节点要全选;

当不选父节点时,子节点全不选。当然光选子节点可以的啦。

 

弄了半天,也只是找到js的代码,长而且很多方法,不易看懂。

自己测试了个方法可以试试哦。

 

        private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
        {
            if (0 < e.Node.Nodes.Count)
            {
                foreach (TreeNode node in e.Node.Nodes)
                {
                    node.Checked = e.Node.Checked;
                }
            }
        } 

嘻嘻。搞定

 

 

后来老大有要求对树节点进行拖动,及将一个子节点拖放到另一个节点下面去,考,又耍额,不过。。。。。。嘿嘿

 

        private void treeView1_DragDrop(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode", false))
            {
                TreeNode drageNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");

                // 获取鼠标落点处 TreeNode
                Point p = ((TreeView)sender).PointToClient(new Point(e.X, e.Y));
                TreeNode targetNode = ((TreeView)sender).GetNodeAt(p);

                targetNode.Nodes.Add(drageNode.Clone() as TreeNode); // 复制此节点和以此节点为根的整个子树
                drageNode.Remove();

                (sender as TreeView).ExpandAll();
            }
            else
            {
                MessageBox.Show("out!");
            }
        }

 

一定要将 TreeView 的 AllowDrop 设为 true 哦

 

下面不让拖动根节点

        private void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
        {
            TreeNode node = e.Item as TreeNode;
            if (e.Button == MouseButtons.Left && null != node && null != node.Parent)
            {
                DoDragDrop(e.Item, DragDropEffects.Move);
            }
        }

 

 

 

用鼠标将某项拖动到拖动到该控件的工作区域时发生

        private void treeView1_DragEnter(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.Move;
        }

 

哇唔,搞定。嘿嘿

 

你可能感兴趣的:(TreeView控件的父节点的全选与不选级联子节点并实现拖动子节点)