About TreeView Control

 About TreeView Control

 

 

        /**/
        /**/
        /* TreeView */
        private void treeView1_MouseDown(object sender, MouseEventArgs e)/* TreeView --》鼠标单击判断*/
        {
            this.treeView1.ContextMenuStrip = null;

            if (e.Button == MouseButtons.Right)//鼠标点击右键
            {
                this.treeView1.SelectedNode = null;//清除节点的选中状态

                TreeNode curNode = this.treeView1.GetNodeAt(e.X, e.Y);

                if (curNode != null)
                {
                    this.treeView1.SelectedNode = curNode;//锁定右键点击的节点

                    switch (curNode.Name)
                    {
                        case "IsNode"://是一个设备节点
                            this.treeView1.SelectedNode.ContextMenuStrip = this.contextMenuStripNetworkTopNode;

                            //点击节点处的右键菜单
                            break;
                        case "IsFileNode"://是一个文件夹节点
                            this.treeView1.SelectedNode.ContextMenuStrip = this.contextMenuStripNetworkTopNode;

                            //点击节点处的右键菜单
                            break;
                    }
                    this.treeView1.SelectedNode = curNode;
                    this.treeView1.SelectedNode.ContextMenuStrip = this.contextMenuStripNetworkTopNode;

                    //点击节点处的右键菜单
                }
                else
                {
                    //this.treeView1.SelectedNode = null;//取消节点的选中状态
                    this.treeView1.ContextMenuStrip = this.contextMenuStripDeviceTree;

                   //点击TreeView空白处的右键菜单
                }
            }
        }

 

        private void treeView1_AfterCollapse(object sender, TreeViewEventArgs e)
        {/* TreeView --》目录树折叠后,文件夹节点图标改变*/
            TreeNode node = e.Node;

            node.ImageIndex = 0;
            node.SelectedImageIndex = 0;

        }

        private void treeView1_AfterExpand(object sender, TreeViewEventArgs e)       

        {/* TreeView --》目录树展开后,文件夹节点图标改变*/
            TreeNode node = e.Node;

            node.ImageIndex = 1;
            node.SelectedImageIndex = 1;
        }


        /* TreeView 拖放节点功能 */

        private void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
        {//触发TreeNode拖放操作
            this.treeView1.SelectedNode = null;

            TreeNode tn = (TreeNode)e.Item;

            
            if ((e.Button == MouseButtons.Left) && (tn != null))
            {
                DoDragDrop(e.Item, DragDropEffects.Move);
                this.treeView1.SelectedNode = tn;
            }
        }


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

                
                Point pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y));
                TreeNode dstTreeNode = ((TreeView)sender).GetNodeAt(pt);

 

                if ((dstTreeNode != null) && (dstTreeNode.Name != "IsDevice") && (dstTreeNode != srcTreeNode.Parent))
                {
                    this.treeView1.SelectedNode = dstTreeNode ;

 

                    dstTreeNode.Nodes.Add(srcTreeNode.Clone() as TreeNode);

 

                    if (srcTreeNode.Parent.Nodes.Count == 1)//如果该文件夹节点只有一个设备子节点,移除后折叠起来
                    {
                        srcTreeNode .Parent.Collapse();//折叠起来
                        srcTreeNode .Remove();
                    }

 

                    dstTreeNode .ExpandAll();//展开子树
                }
            }

        }

 

        private void treeView1_DragEnter(object sender, DragEventArgs e)
        {

            if (e.Data.GetDataPresent(typeof(TreeNode)))
            {
                e.Effect = DragDropEffects.Move;
            }
        }

 

        private void treeView1_DragOver(object sender, DragEventArgs e)
        {
            TreeNode Node = this.treeView1.GetNodeAt(treeView1.PointToClient(new Point(e.X,e.Y)));

            if (Node != null)
            {
                this.treeView1.SelectedNode = Node;
                e.Effect = DragDropEffects.Move;         
            }
        }

 

        private void treeView1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Delete)//Delete按键,删除节点
                DeleteTreeNode();
            else if (e.KeyCode == Keys.F2)
                treeView1.SelectedNode.BeginEdit();//F2按键,编辑节点Label标签
        }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值