zoukankan      html  css  js  c++  java
  • 使用winform来递归实现资源管理器

    这里主要是对TreeView控件的学习

    所使用到的方法:
    string path=@"E:\歌词";

    //获得指定文件夹下所有文件夹的名称,这是带路径的,如:E:\歌词\1111111

    Directory.GetDirectories(path);

    //获得指定路径下的文件的文件名,不带路径与后缀名 ,如:01 Welcome To New York

    Path.GetFileNameWithoutExtension(FilePath[i])


    //这是TreeNode节点的集合类
    TreeNodeCollection


    //TreeNode 节点可以New,可以设置text,与Tag属性

    TreeNode tn = new TreeNode();
    tn.Text = filename;
    tn.Tag = Newfilepath[i];


    //TreeView控件 有SelectedNode 获取选中的节点,与事件 tv_AfterSelect,选中节点发生改变之后所触发

    string path = tv.SelectedNode.Tag.ToString();

    代码:

    //方法需传入绝对路径,以及Treeview的Name的Nodes属性
    private void GetNodeValue(string path, TreeNodeCollection tc)
            {
                //加载选定文件夹下的文件的名字
                string[] FilePath = Directory.GetDirectories(path);
    
                //获得文件的名字
                string filename = string.Empty;
    
                //获得文件夹的名字
                for (int i = 0; i < FilePath.Length; i++)
                {
                    filename = Path.GetFileNameWithoutExtension(FilePath[i]);
    
                    TreeNode tn = new TreeNode();
                    tn.Text = filename;
                    //在treeview节点下存下每个节点的路径
                    tc.Add(tn);
    
                    //这里遇到了递归,遇到文件夹,先进入文件夹里面去遍历,将大的tr,替换为小的tr
                    GetNodeValue(FilePath[i],tn.Nodes);
                }
    
                //因为目录名不能被点击,获得目录下的文件
                //获得文件夹下文件的名字,
                string[] Newfilepath = Directory.GetFiles(path);
                for (int i = 0; i < Newfilepath.Length; i++)
                {
                    filename = Path.GetFileNameWithoutExtension(Newfilepath[i]);
    
                    TreeNode tn = new TreeNode();
                    tn.Text = filename;
                    //在treeview节点下存下每个节点的路径
                    tn.Tag = Newfilepath[i];
                    tc.Add(tn);
                }
            }
    
            //然后是点击事件,发生之后,将读取路径下的值,放进textbox中
            private void tv_AfterSelect(object sender, TreeViewEventArgs e)
            {
                try
                {
                    string path = tv.SelectedNode.Tag.ToString();
                    txtBox.Text = File.ReadAllText(path, Encoding.UTF8);
                }
                catch { }
            }

    扩展:

    1、TreeView控件和TreeNode的常用成员

    AfterSelect //单击事件

    TreeView.HideSelection = False;  //可让选中节点保持高亮

    Node = TreeView.SelectedNode; //已选中的当前树节点

    string I = treeView1.SelectedNode.Index.ToString()

       //当前节点的索引值,由0开始,只限于同父、同级的节点集合

    treeView1.SelectedNode.Text = “String”; //设置当前节点的文本

      string String = treeView1.SelectedNode.Text; //获取当前节点的文本

    treeView1.SelectedNode.FullPath.ToString();

      //当前节点的全路径,从根节点开始到当前节点,由节点的Text属性加“\”连接而成的字符串,最后的节点后面没有“\”

    treeView1.SelectedNode.Tag;

      //当前节点的其他信息,可以是各种类型,也可以是对象

    treeView1.SelectedNode.Name:树节点的名称,也是(TreeNodes集合)TreeNodeCollection 中该节点的键(key)

    treeView1.SelectedNode.Parent; //当前树节点的父树节点。

    treeView1.SelectedNode.Level; //树视图的深度(从零开始)

    2、在treeView控件中,成员Nodes其实就是一个TreeNode的集合,所以也可以使用TreeNodeCollection的成员:

    TreeNodeCollection 类,TreeNodes集合类

    treeView1.Nodes.Add(字符串);

      //以字符串为显示文本添加节点到树集合的末尾

    treeView1.Nodes.Add(TreeNode);

      //将现有的树节点添加到树节点集合的末尾。

    treeView1.Nodes.Add(String, String):创建具有指定键和文本的新树节点,并将其添加到集合中。

    treeView1.Nodes.Find(string key,bool searchAllChildren):查找具有指定键的树节点,可以选择搜索子节点,返回一个list[]。

  • 相关阅读:
    BZOJ2456: mode 众数卡空间
    BZOJ4128: Matrix 矩阵BSGS
    [SDOI2011]计算器 BSGS
    前台中文搜索到后台乱码
    批量删除实现js+springmvc
    基于Jquery+Ajax+Json实现分页显示
    分页条的制作
    input text中不能显示空格后的内容
    mysql存入中文乱码问题
    WEBROOT根目录 <%=request.getContextPath()%>
  • 原文地址:https://www.cnblogs.com/Raymond201508/p/4769653.html
Copyright © 2011-2022 走看看