这里主要是对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 = ; 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 = ; 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[]。

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

  1. WinForm资源管理器开发(TreeView&ListView)

    在C# WinForm开发当中,有三大View控件值得深入应用,分别为DataGridView.ListView.TreeView.如果这三大控件能够熟练的应用,其它的控件也就基本没有问题.所以这篇博 ...

  2. winform:简单文件资源管理器

    今天全部学习内容的体现就是winform的资源管理器.这个资源管理器主要由一个textbox获取路径,然后在treeview那里通过递归的方式呈现目录树,当用户点击treeview的节点是,会触发Af ...

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

    自制一个简易资源管理器----TreeView控件 第一步.新建project,进行基本设置:(Set as StartUp Project:View/Toolbox/TreeView) 第二步.开始 ...

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

    初次接触到IO流,根据书本上的知识,加上自己的摸索,发现了一些好玩的事情.(书本上的知识或多或少,有时候不足以解决我们的问题!这时候我们就应该自己去求解!!! 所以我们学习的时候要抱有探索的精神,求知 ...

  5. 用node.js实现mvc相册资源管理器

    摘要:通过前两天的学习我大概学了了,用formidable模块文件上传,express框架,以及利用fs模块进行文件读取,今天我学习了如何用这些知识来制作相册,暂没有数据库,所以做的也是本地的资源管理 ...

  6. 360安全卫士造成Sharepoint文档库”使用资源管理器打开“异常

           备注:企业用户还是少用360为妙        有客户反馈:部门里的XP SP2环境客户机全部异常,使用资源管理器打开Sharepoint文档库,看到的界面样式很老土,跟本地文件夹不一样 ...

  7. Windows 7 在资源管理器中显示软件快捷方式

    该方法是利用资源管理器中储存网络位置的文件夹实现的, 不需要修改注册表. 效果如图: 操作方法: 在资源管理器中打开路径 "%appdata%\Microsoft\Windows\Netwo ...

  8. 修复 Windows7 资源管理器左侧收藏夹无法展开问题

    相信大家在网上搜多到的解决办法大多数都是修改注册表,但是这个办法多数是无效的 1.运行regedit 2.展开到HKEY_CLASSES_ROOT\lnkfile 3.添加一个字符串值:IsShort ...

  9. [No00009C]Visual Studio在 解决方案资源管理器 里同步定位打开的文件

    标题的意思就是在使用VS的时候,需要我们打开编辑的文件跟解决方案的资源管理器同步显示,这样方便定位到我们在修改哪个文件. 设置如下: 工具——选项——项目和解决方案——在解决方案资源管理器中跟踪活动项 ...

随机推荐

  1. .Net Static 与单例

    Static 关键字作为修饰符可以用于类.方法和成员变量上.其含义是对于整个应用程序生命周期内,访问该修饰符修饰的对象/方法/变量都引用到同一实例(内存地址).但正因如此在多线程下会出现线程安全问题: ...

  2. ios -几种常见定时器

    转自cocoachina 网友分享: http://mp.weixin.qq.com/s?__biz=MjM5OTM0MzIwMQ==&mid=206637839&idx=7& ...

  3. 【Java/Android性能优2】Android性能调优工具TraceView介绍

    本文参考:http://www.trinea.cn/android/android-traceview/ Android自带的TraceView堪比java的性能调优工具visualvm线程视图,可以 ...

  4. OC之protocol监听器的实现

    画图 图解 代码 总结 一.画图 本人画了一个图(字体和画图水平请忽略) 二.图解 1.首先我们上边是一个按钮的类,按钮当中包括了一条线,这个线是什么呢? 其实难理解就难理解到这条线上了 1⃣️这条线 ...

  5. Jmeter参数化的4种方法

    用Jmeter测试时包含两种情况的参数,一种是在url中,一种是请求中需要发送的参数. URL中的参数,如:http://blog.da-fang.com/index.php/2010/06/01/j ...

  6. Java Script基础(十一) 表单验证

    一.表单验证的必要性: 表单验证在客户端和服务器端,客户端验证实际是直接调用JavaScript脚本对用户输入的数据进行验证:而服务器也同样可以实现数据验证,但是当服务器压力过大时,资源损耗会比较严重 ...

  7. 存储过程 <3> 和函数的区别

    二.函数和存储过程的优点: 1.共同使用的代码可以只需要被编写一次,而被需要该代码的任何应用程序调用(.net,c++,java,也可以使DLL库). 2.这种几种编写.几种维护更新.大家共享的方法, ...

  8. Oracle 基础 <1> --存储过程

    一.子程序 子程序是已命名的PL/SQL块,它们存储在数据库中,可以Wie它们指定参数,可以从任何数据库客户端和应用程序中调用它们.子程序包括存储过程和函数. 子程序包括: 1.声明部分:声明部分包括 ...

  9. page61-将二分查找重写为一段面向对象的程序

    1 将二分查找重写为一段面向对象的程序 (用于在整数集合中进行查找的一种抽象数据类型) public class StaticSETofInts [API] StaticSETofInts(int[] ...

  10. dfa最小化,上一个版本采用的是moore的打表法,这个版本采用的是hopcroft的方法,但是实现中采用链表而不是栈来优化。

    hopcroft法的复杂度,他们说是nlogn,可是都没有严格的证明.难得找到一篇讲的详细点的论文,却又啰里啰唆的,不过那篇论文里面采用的是颜色树这个结构,有点意思. 前面的那个算法是n的平方复杂度, ...