使用Windows Form 制作一个简易资源管理器
自制一个简易资源管理器----TreeView控件
第一步、新建project,进行基本设置;(Set as StartUp Project;View/Toolbox/TreeView)

第二步、开始添加节点
添加命名空间using System.IO;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO; namespace _ResouceManager_
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Form1_Load(object sender, EventArgs e)
{
//这里是资源管理器的根路径
string strRoot = @"H:\自制资源管理器";//路径
CreateParent(strRoot);
} private void CreateParent(string strRoot)
{
//创建根节点parent
TreeNode parent = new TreeNode();
DirectoryInfo di=new DirectoryInfo(strRoot);
parent.Text= di.Name ;
parent.Tag = di.FullName; //添加父节点
tvResouceManager.Nodes.Add(parent); //创建子节点
CreateChild(strRoot,parent);
//展开所有节点
parent.ExpandAll(); } private void CreateChild(string path,TreeNode parent )
{
DirectoryInfo di = new DirectoryInfo(path);
//所有的子文件夹
DirectoryInfo[] dirs = di.GetDirectories();
//遍历子文件夹
foreach(DirectoryInfo dir in dirs)
{
//创建子节点
TreeNode child = new TreeNode();
child.Text = dir.Name;
//child.Tag = dir.FullName; //添加子节点
parent.Nodes.Add(child); //递归实现多级文件夹的遍历、创建子节点、添加子节点
CreateChild(dir.FullName,child); //添加文件节点
CreateFile(dir.FullName,child);
}
} private void CreateFile(string p, TreeNode child)
{
DirectoryInfo di = new DirectoryInfo(p);
//路径下的所有文件
FileInfo[] files = di.GetFiles();
//添加路径下的所有文件
foreach(FileInfo file in files)
{
//创建节点
TreeNode tn = new TreeNode();
tn.Text = file.Name;
// tn.Tag = file.FullName; //添加节点
child.Nodes.Add(tn);
}
} }
}

这里基本上完成了目录添加,尚不能增加文件、删除文件、移动文件等操作,还需继续努力。
右边是两个文本框,可以进行文本的编辑等(代码不全)。
首先在左边的treeview中点击某个节点,进行判断点击的是哪个节点,如果是.doc或者是.txt就可以编辑(其他文件类型如PDF之类可以自己写代码哦)。
先将上述代码中关于.Tag的注释取消
private void tvResouceManager_AfterSelect(object sender, TreeViewEventArgs e)
{
if (e.Node.Tag == null) return;
string path = e.Node.Tag.ToString();
if(path.LastIndexOf(".doc")>)
{
//如果点击的是.doc文档,将标题写入上文本框
txtTitle.Text = Path.GetFileNameWithoutExtension(e.Node.Text);
//文档内容写入下文本框,并使用指定的编码规则进行读文本操作
//txtContent.Text = File.ReadAllText(path,Encoding.GetEncoding("utf-8"));
txtContent.Text = File.ReadAllText(path, Encoding.Default);
} } private void btnSave_Click(object sender, EventArgs e)
{
if (tvResouceManager.SelectedNode == null) return;
if (tvResouceManager.SelectedNode.Tag == null) return; string path = tvResouceManager.SelectedNode.Tag.ToString(); if (path.LastIndexOf(".doc") > )
{
string content = txtContent.Text;
File.WriteAllText(path, content, Encoding.Default); MessageBox.Show("Save Successed"); }
}
使用Windows Form 制作一个简易资源管理器的更多相关文章
- 用XMLHttpRequest制作一个简易ajax
概述 jquery退出历史舞台之后,我们怎么来发送ajax请求呢?可以用相关的库,也可以自己制作一个简易的ajax. 需要说明的是,我们使用的是XMLHttpRequest 2,它几乎兼容所有主流浏览 ...
- 吴裕雄--天生自然python学习笔记:python 用pygame模块制作一个音效播放器
用 Sound 对象制作一个音效播放器. 应用程序总览 程序在执行后默认会把 WAV 音频文件加载到清单中,单击“播放”按钮可开始 播放,同时显示 “正在播放 xxx 音效”的信息 . 播放过程中,可 ...
- 使用 history 对象和 location 对象中的属性和方法制作一个简易的网页浏览工具
查看本章节 查看作业目录 需求说明: 使用 history 对象和 location 对象中的属性和方法制作一个简易的网页浏览工具 实现思路: 使用history对象中的 forward() 方法和 ...
- (转)C#制作一个消息拦截器
首先,我们先要制作一个自定义Attribute,让他可以具有上下文读取功能,所以我们这个Attribute类要同时继承Attribute和IContextAttribute. 接口IContextAt ...
- C#制作一个消息拦截器(intercept)1
首先,我们先要制作一个自己定义Attribute,让他能够具有上下文读取功能,所以我们这个Attribute类要同一时候继承Attribute和IContextAttribute. 接口IContex ...
- Opencv探索之路(二十):制作一个简易手动图像配准工具
近日在做基于sift特征点的图像配准时遇到匹配失败的情况,失败的原因在于两幅图像分辨率相差有点大,而且这两幅图是不同时间段的同一场景的图片,所以基于sift点的匹配已经找不到匹配点了.然后老师叫我尝试 ...
- iOS:制作一个简易的计算器
初步接触视图,制作了一个简易的计算器,基本上简单的计算是没有问题的,不是很完美,可能还有一些bug,再接再厉. // // ViewController.m // 计算器 // // Created ...
- QT制作一个图片播放器
前言:使用qt制作了一个简单的图片播放器,可以播放gif.png等格式图片 先来看看播放器的功能(当然是很简陋的,没有很深入的设计): 1.点击图片列表中图片进行播放. 2.自动播放,播放的图片的间隔 ...
- 使用jQuery制作一个简易的购物车结算流程
因为今天下午时候在网上买了东西,在结算界面的时候突发奇想的也想自己动手做一个结算界面,当然了,只是一个最简易的结算界面,有商品数量的加减,有单价和小计,单个多个删除,全选和区县全选等等一些小功能,我在 ...
随机推荐
- OnTimer
OnTimer不是多线程. OnTimer是以SendMessage的方式发送消息到消息队列. sendMessage必须等待对话框响应完消息后才返回.
- monkeyrunner自动化测试
通过MonkeyRunner遍历apk文件夹里的apk文件,实现自动安装应用,打开应用,截图,将截图与提前准备好的基线图做对比,对比相似度达到90%时,则对比通过,然后自动卸载应用,进入下一个APK文 ...
- Vs2010在C#类文件头部添加文件注释的方法
步骤: 1.VS2010 中找到(安装盘符以C盘为例) 32位操作系统路径:C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Item ...
- ES6 标准部分应用
1.多行字符串 字符串换行时,不再使用\n,而是使用倒引号`..`,例如: alert(`这是一个 多行 字符串`); 2.模版字符串 不再使用"+"来拼接字符串与变量,而是使用倒 ...
- JAVA类与对象
Employee类: public class EmployeeTest { public static void main(String[] args) { // fill the staff ar ...
- Tomcat version 7.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 and 6 Web modules
解决方案: 找到如下文件 将"jst.web"的version改低一些
- Spring MVC错误页面配置
当前SpringMVC非常流行,在大多数情况,我们都需要自定义一些错误页面(例如:401, 402, 403, 500...),以便更友好的提示.对于spring mvc,这些当然是支持自定义的,sp ...
- 深入浅出Mybatis系列(十)---SQL执行流程分析(源码篇)
最近太忙了,一直没时间继续更新博客,今天忙里偷闲继续我的Mybatis学习之旅.在前九篇中,介绍了mybatis的配置以及使用, 那么本篇将走进mybatis的源码,分析mybatis 的执行流程, ...
- 深入浅出Mybatis系列(五)---TypeHandler简介及配置(mybatis源码篇)
上篇文章<深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)>为大家介绍了mybatis中别名的使用,以及其源码.本篇将为大家介绍TypeH ...
- jquery validate表单验证插件
1 表单验证的准备工作 在开启长篇大论之前,首先将表单验证的效果展示给大家. 1.点击表单项,显示帮助提示 2.鼠标离开表单项时,开始校验元素 3.鼠标离开后的正确.错误提示及鼠标移入时的帮 ...