zoukankan      html  css  js  c++  java
  • TREEVIEW节点拖拽

     
     
     
    假设把A节点往B节点上拖拽
    那么 
    A 为Node1,B为Node2
     
     
           private void Form1_Load(object senderEventArgs e)
            {
                treeView1.AllowDrop = true;
        treeView1.HideSelection = false;
            }
     
     
     
            private TreeNode node1 = null//node1  当前选中的那个节点
            private void treeView1_ItemDrag(object senderItemDragEventArgs e)
            {  
                node1 = (TreeNode)e.Item;
                 DoDragDrop(e.ItemDragDropEffects.Move);  
            }
     
             private void treeView1_DragOver(object senderDragEventArgs e)
            {
                TreeNode node2 = treeView1.GetNodeAt(treeView1.PointToClient(new Point(e.Xe.Y)));
                //节点2不存在
                //节点1 = 节点2
                //节点1 往它的父一级节点拖拽
                if ((node2 == null) || (node1 == node2) || (node1.Parent == node2))
                {
                    treeView1.SelectedNode = node1;
                    SetTreeNodeColorDefault();
                    e.Effect = DragDropEffects.None;
                    return;
                }
                else
                {
                    e.Effect = DragDropEffects.Move;
                    treeView1.SelectedNode = node2;
                    SetTreeNodeColorBlue();
     
                    //当一个父节点往它的子节点中拖拽时
                    while (node2.Parent != null)
                    {
                        if (node2.Parent == node1)
                        {
                            e.Effect = DragDropEffects.None;
                            return;
                        }
                        node2 = node2.Parent;
                    }
                }
            }
     
             private void treeView1_DragDrop(object senderDragEventArgs e)
            {
                TreeNode node2 = treeView1.GetNodeAttreeView1.PointToClient(new Point(e.Xe.Y)) );
                if (node1 != node2)
                {
                    if (node1.Parent != node2)
                    {
                        textBox1.Text = textBox3.Text + "\" + node1.FullPath;
                        textBox2.Text = textBox3.Text + "\" + node2.FullPath;           
                        ///MessageBox.Show("Finished");
                        if (node1.Parent == null)
                            treeView1.Nodes.Remove(node1);
                        else
                            node1.Parent.Nodes.Remove(node1);
     
                        node2.Nodes.Add(node1);
                        node2.Expand();
                    }
                }
            }
     
    //设置颜色部分
           private void treeView1_MouseDown(object senderMouseEventArgs e)
            {
                SetTreeNodeColorDefault();
            }
     
             private void SetTreeNodeColorBlue()
            {
                if (node1 != null)
                {
                    node1.BackColor = Color.FromArgb(51, 153, 255);//蓝色 
                    node1.ForeColor = Color.White;
                }
            }
     
     
           private void SetTreeNodeColorDefault()
            {
                if (node1 != null)
                {
                    node1.BackColor = SystemColors.Window;
                    node1.ForeColor = Color.Black;
                }
            }
     
     
     
     





    附件列表

  • 相关阅读:
    【阅读】读书只是生活方式的一种
    【Android崩溃记录】持续更新(bugly)
    【iOS】判断字符串是否是url及从字符串中提取url
    【React Native】正则判断字符串中是否包含url、提取字符串中的url
    【Objective-C】自定义UITextView(placeholder,长按换行,文字位置、文字间距等)
    【Swift】监听耳机插入拔出的通知
    INS(Instagram)如何绑定谷歌二次验证码/谷歌身份验证/双重认证?
    脸书(Facebook)如何绑定谷歌二次验证码/谷歌身份验证/双重认证?
    推特(Twitter)如何绑定谷歌二次验证码/谷歌身份验证/双重认证?
    TeamViewer如何绑定谷歌二次验证码/谷歌身份验证?
  • 原文地址:https://www.cnblogs.com/xe2011/p/3411252.html
Copyright © 2011-2022 走看看