zoukankan      html  css  js  c++  java
  • TREEVIEW拖拽对应修改目录

     
     

    TREEVIEW拖拽对应修改目录

     
     
     
    using System.IO;
     
     
            private static string RootPath = @"D:AdministratorDocumentsTestData";
            //返回 D:AdministratorDocuments
            private string myPath = GetDirectoryParentPath(RootPath); 
            private void Form1_Load(object senderEventArgs e)
            {
                treeView1.AllowDrop = true;
                treeView1.HideSelection = false;
                DirectoryToTreeNode(RootPath,treeView1);
            }
     
     
    //添加目录到TREEVIEW
           private void DirectoryToTreeNode(string RootDirTreeView treeView)
            {
                treeView.Nodes.Clear();
                DirectoryInfo di = new DirectoryInfo(RootDir);
                TreeNode rootNode = new TreeNode(di.Name);
                GetDirs(di.GetDirectories(), rootNode);
                treeView.Nodes.Add(rootNode);
                rootNode.Expand();
            }
     
           private void GetDirs(DirectoryInfo[] subDirsTreeNode treeNode)
            {
                foreach (DirectoryInfo d in subDirs)
                {
                    TreeNode node = new TreeNode(d.Name, 0, 0);
                    DirectoryInfo[] subSubDirs = d.GetDirectories();
                    GetDirs(subSubDirsnode);
                    treeNode.Nodes.Add(node);
                }
            }
     
     
     
       /*问题
                C:Program Files\
                C:Program Files///
             */
            private bool DirectoryExists(string path)
            {
                DirectoryInfo d = new DirectoryInfo(path);
                return d.Exists;
            }
     
           //目录 D:AdministratorDocumentsTestData
            //返回 D:AdministratorDocuments
            private static string GetDirectoryParentPath(string path)
            {
                DirectoryInfo d = new DirectoryInfo(path);
                return d.Parent.FullName;
            }
     
            //目录 D:AdministratorDocumentsTestData
            //返回 TestData
            private string ExtractDirectoryName(string path)
            {
                DirectoryInfo d = new DirectoryInfo(path);
                return d.Name;
            }
     
    //移动文件夹
         //C:Windowsa
        //C:Windows
        //实际运行过程 Directory.Move( "C:Windowsa" , "C:Windowsa");
        private bool MoveDirectory(string sourceDirNamestring destDirName)
        {
            destDirName = String.Format("{0}\{1}"destDirNameExtractDirectoryName(sourceDirName));
            //源目录存在 但目标目录不存在
            if (DirectoryExists(sourceDirName) && !DirectoryExists(destDirName)) 
            {
                Directory.Move(sourceDirNamedestDirName);
                //源目录不存在 但目标目录存在
                if (!DirectoryExists(sourceDirName) && DirectoryExists(destDirName)) 
                    return true;
            }
            else
                return false;
            return false;
        }
     
     
     
     TreeView拖拽操作
           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)
                    {
                        string dir1 = myPath + "\" + node1.FullPath;
                        string dir2 = myPath + "\" + node2.FullPath;
     
                        textBox1.Text = dir1;
                        textBox2.Text = dir2;
                      
                        if (MoveDirectory(textBox1.TexttextBox2.Text))
                        {
                        //MessageBox.Show("Finished");
     
                            // Remove drag node from parent
                            if (node1.Parent == null)
                                treeView1.Nodes.Remove(node1);
                            else
                                node1.Parent.Nodes.Remove(node1);
                            node2.Nodes.Add(node1);
                            treeView1.SelectedNode = 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;
                }
            }
     





    附件列表

  • 相关阅读:
    响应式网页设计初探
    karma 启动提示PhantomJS not found on PATH
    Vuex 拾遗
    cStringIO 实现指定大小的字符串缓存
    javascript 计算文件MD5 浏览器 javascript读取文件内容
    springmvc值传递
    SpringMVC
    spring事务
    spring整合JDBC
    spring-test与junit
  • 原文地址:https://www.cnblogs.com/xe2011/p/3435666.html
Copyright © 2011-2022 走看看