使用winform来递归实现资源管理器

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

所使用到的方法:
string [email protected]"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[]。

时间: 2024-10-14 12:03:34

使用winform来递归实现资源管理器的相关文章

unity 资源管理器设计

资源管理器,顾名思义,就是管理游戏中的所有资源,包括加载资源,回收资源,销毁资源等等.下面这个资源管理器主要提供了对assetbundle异步加载功能,Resources的加载没有放在里面. 一.使用方法 1.在进入游戏前调用Init(),加载一个资源的名称列表 2.调用AsynGetAsset(string name, Action<UnityEngine.Object> callback)方法(异步) 说明,这里的资源列表是从bundle_list列表中解析出来的,并且有一个manifes

使用Windows Form 制作一个简易资源管理器

自制一个简易资源管理器----TreeView控件 第一步.新建project,进行基本设置:(Set as StartUp Project:View/Toolbox/TreeView) 第二步.开始添加节点 添加命名空间using System.IO; 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Dra

初识IO流之小型资源管理器

初次接触到IO流,根据书本上的知识,加上自己的摸索,发现了一些好玩的事情.(书本上的知识或多或少,有时候不足以解决我们的问题!这时候我们就应该自己去求解!!! 所以我们学习的时候要抱有探索的精神,求知若渴是帮助我们获取更多知识的一种积极的精神态度,需要保持) 小型资源管理器 该项目主要是为了加载电脑磁盘中存在的所有文件夹和文件(directory,file) 这时候我遇到了第一个问题:书本上只有将指定的磁盘设为根节点,在窗体TreeView中添加该磁盘中的文件夹 (我去,那如果我的电脑上分了几十

小项目:mini资源管理器【使用IO流:包含(Directory与DirectoryInfo、File与FileInfo的用法)】

主界面是这样的 1.在点击查询引发的事件时把TextBox.Text输入的目录地址加载到TreeList控件里. private void btnSelect_Click(object sender, EventArgs e) { //避免重复加载tv.Nodes.Clear(); ////Load事件手动添加根节点TreeNode tn = new TreeNode(); tn.Text = tbxName.Text;//根节点名字:tn.Tag = tbxName.Text;//根节点物理地

Win10重命名文件夹导致资源管理器卡顿的解决办法

我本机使用的是 Win10 1607,不清楚是因为什么原因导致重命名文件夹时资源管理器会被卡死,找了很长时间终于找到了解决办法,现在我把步骤粘出来以便后续遇到相同问题的朋友能及时解决. 其实操作很简单,只需要简单的三步: 1. 打开任意文件夹 2. 点击左上角菜单栏中的"文件"按钮,选择"更改文件夹和搜索选项",如下图所示: 3. 在弹出的文件夹选项窗口中,依次点击"清除文件资源管理器历史记录"后的"清除"按钮和"还

文件服务器资源管理器

文件服务器资源管理器就三部分内容,分别是 配额,文件屏蔽管理,存储报告管理. 磁盘配合: 先说配额的应用方式,配额是先建立配额模板,在配额设置里面要应用配额的文件夹或者磁盘然后绑定上要用的配额模板即可,也可以 采取自定义的设置来做 这里要重点说一下 红框里面的问题,好多人容易在这个地方犯错误,1.在路径上创建配额是在这个文件夹一下的路径上(也可以理解为这个文件夹里面的文件总数不能超过配合) 2.在现有子文件夹贺新文件夹中自动创建配合是在这个文件夹一下的路径下所创建的文件夹大小都收这个配额的限制(

Jtree(节点的渲染+资源管理器)(2)

上一次我们建立一个比较简单的资源管理器,这次我们说一下上面的资源管理器的问题,并且得尽量的贴近windows的资源管理器. 这样一个简单的资源管理树就完成了,下面我们说说它的问题: ① 图片和外观和Windows有差距 这个我们可以通过设置L&F和通过前面写的Renderer那样设置新的图片解决,不是大问题. ② 文件夹里文件多时展开会很慢,会导致界面假死 这个我们可以自己写一个缓加载的TreeNode,让它继承于DefaultMutableTreeNode,在它里面定义加载标示,然后使用Swi

10gocm-&gt;session5-&gt;数据库管理实验-&gt;GC资源管理器资源消耗组演示

<GC资源管理器> 官方文档:administrator's Guide->24 Using the Database Resource Manager 使用率:在实际生产环境中使用的比较少 作用:限制数据库资源的使用,CPU  内存  undo表空间  IO  session 场合:当有多个应用使用一个数据库并且资源紧张时可用"资源管理器"调节 实现:可用GC完成也可用EM完成,还可以使用程序包完成 UI方式:简单,快捷,不容易出错 commend方式:设置复杂,命

win7频繁提示资源管理器已停止工作解决办法

今天上班打开电脑,总是弹出windows资源管理器已停止工作,点击下方的[重新启动],又恢复正常,但是不一会出现这个问题,如此反复,差不多一分钟左右出现一次,让人心烦意乱,没法工作! 一开始尝试了网上各种方法,诸如:修改注册表.进入安全模式杀毒.任务管理器 新建explorer.exe 进程.  甚至搞了一次 系统还原,折腾一上午,可是问题依旧,难道就为这重装一次系统???? 突然灵光一闪,想起查看 系统日志,果然找到一个错误日志, 错误应用程序名称: explorer.exe, 版本: 6.1