c#做的查找文件夹内内容的小工具
第一次写博客有点激动啊QAQ
来新单位,一直没活干,公司代码控制器太多,其中有很多文件夹,每次找一个控制器都老找不到,我又不愿意用VS的全局搜索,想着没事就做了个查找控制器的小工具。代码如下:
先添加了界面

在pagelode里首先需要构建一张虚拟表
private void Form1_Load(object sender, EventArgs e)
{
DataColumn d1 = new DataColumn("ID", typeof(int));
DataColumn d2 = new DataColumn("Name", typeof(string));
DataColumn d3 = new DataColumn("PID", typeof(string));
dt.Columns.Add(d1);
dt.Columns.Add(d2);
dt.Columns.Add(d3);
}
之后再创建确定按钮的代码,确定是说查找路径。。
private void button2_Click(object sender, EventArgs e)
{
if (treeView1.Nodes.Count != 0)
treeView1.Nodes.Clear();
string path = txtSeachFolder.Text;
try
{
//if (path != "")
if(path.Trim()=="")
{
path = @"D:\Project\SourceCode\CFLD.PMS_v2.0\CFLD.PMS.Web\Controllers";
FindFile(path);
}
else if (path != "")
{
FindFile(path);
}
else
MessageBox.Show("请输入路径");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
这里面的findfile是用来填充树控件的,具体代码是
public void FindFile(string dirPath)
{
DataRow[] rows = dt.Select("ID=-1");
DirectoryInfo di=new DirectoryInfo(dirPath);
var folder = di.GetDirectories();
List<string> conNames = new List<string>();
if (folder.Count() != 0)
{
#region 文件夹
try
{
int i = 0;
foreach (var item in folder)
{
TreeNode tn = new TreeNode();
DataRow dr = dt.NewRow();
dr["ID"] = i;
dr["Name"] = item.Name;
dr["PID"] = i;
dt.Rows.Add(dr);
tn.Tag = dr;
tn.Text = item.Name;
foreach (var item1 in item.GetFiles())
{
TreeNode tn1 = new TreeNode();
tn1.Text = item1.Name;
tn.Nodes.Add(tn1);
}
treeView1.Nodes.Add(tn);
listBox1.Items.Add(item.Name);
i++;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
#endregion
}
else
{
try
{
int j = 0;
var files = di.GetFiles();
foreach(var item in files)
{
TreeNode tn = new TreeNode();
DataRow dr = dt.NewRow();
dr["ID"] = j;
dr["Name"] = item.Name;
dr["PID"] = j;
dt.Rows.Add(dr);
tn.Tag = dr;
tn.Text = item.Name;
treeView1.Nodes.Add(tn);
listBox1.Items.Add(item.Name);
j++;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
在之后是查找的代码
private void button1_Click(object sender, EventArgs e)
{
bool b = false;
string value = txtSearch.Text;
this.treeView1.CollapseAll();
foreach (TreeNode node in this.treeView1.Nodes)
{
b= nextnodes(node, value);
if (b)
break;
}
if (!b)
MessageBox.Show("没有查到");
}
这里面的nextnode是用来确定查找到的节点位置的,具体代码是
public bool nextnodes(TreeNode node, string text)
{
foreach (TreeNode tn in node.Nodes)
{
if(tn.Text.ToUpper().Contains(text.ToUpper().Trim()))
{
tn.BackColor = Color.Green; //改变查找到的节点背景色;
if (tn.Parent != null)
tn.Parent.Expand(); //展开服节点
return true;
}
}
return false;
},
好了,看下效果


c#做的查找文件夹内内容的小工具的更多相关文章
- Ubuntu 查找文件夹中内容包含关键字的文件,路径为当前文件夹
From CSDN http://blog.csdn.net/lizhenmingdirk/article/details/44834997 grep -rl "keyword" ...
- Linux批量替换文本,文件夹内所有文本内容
1.替换文件夹内所有文件匹配的字符串 sed -i "s/旧内容/新内容/g" `grep 旧内容 -rl 文件夹路径` 例如将/var/www/test文件夹下的所有文件内容中的 ...
- 编写Java程序,在一个文件夹内,查找占用磁盘空间最大的 jpg 文件,并输出文件大小
查看本章节 查看作业目录 需求说明: 在一个文件夹内,查找占用磁盘空间最大的 jpg 文件,并输出文件大小 实现思路: 创建ImageFileFilter类实现FilenameFilter接口,且重写 ...
- shell脚本实现查找文件夹下重复的文件,并提供删除功能
Windows下有软件FindDupFile,可以搜索指定目录及其下子目录,列出所有内容完全相同的文件(文件名可能不同),然后由用户选择删除重复的文件. 然而shell脚本却可以使用几行的命令完成与此 ...
- ftp下载目录下所有文件及文件夹内(递归)
ftp下载目录下所有文件及文件夹内(递归) /// <summary> /// ftp文件上传.下载操作类 /// </summary> public class FTPH ...
- 批量生成文件夹内所有文件md5
说明:md5批量生成批处理脚本,无需安装任何软件,直接调用系统文件进行生成,简单基于windows命令编写了一个批量生成md5值的脚本. 使用说明:新建文本文档,命名为get_md5.bat,直接将代 ...
- apache环境下禁止某文件夹内运行PHP脚本、禁止访问文件或目录执行权限的设置方法
apache环境下禁止某文件夹内运行PHP脚本.禁止访问文件或目录执行权限的设置方法 首先我们来看两段对上传目录设置无权限的列子,配置如下: <Directory "要去掉PHP执 ...
- linux查找文件夹下的全部文件里是否含有某个字符串
查找文件夹下的全部文件里是否含有某个字符串 find .|xargs grep -ri "IBM" 查找文件夹下的全部文件里是否含有某个字符串,而且仅仅打印出文件名称 fin ...
- ls命名 | Linux统计文件夹内的文件个数
ls命名 man ls -R 递归列出全部的目录内容 recusive -a 列出所有的文件(包括以 . 开头的隐藏文件) all -r 逆序排列 reverse -t 按照时间信息排序 time - ...
随机推荐
- 第二篇:git创建流程
1.创建组织 2.创建 3.点击项目 创建完: 4.选择管理——>选择公钥——>添加个人公钥: 5.怎样生成公钥 5.1.如何生成ssh公钥 你可以按如下命令来生成 sshkey: ssh ...
- bzoj 4182
首先很容易看出这是一个树上多重背包问题 设状态$f[i][j]$表示以$i$为根的子树中利用的体积是$j$ 但是题目中有要求:选择的点集必须是一个联通块 这要怎么处理? 点分治! 首先我们利用点分治的 ...
- MVC进阶篇(一)——概览
前言 说到MVC,就得先说说框架是什么东西,MVC好多人都知道,是Model.view.controller,但是MVC到底是什么样的一个框架呢,好多人又说了是约定大于配置.下面我来说说我的理解. 内 ...
- kali 插耳机没声音
打开终端,然后输入命令:下载pulseaudio音量控制软件: apt install pavucontrol 然后终端输入指令:pavucontrol打开软件,发现在输出设备中有两个输出设备:一个N ...
- ML理论知识博文列表
一文弄懂神经网络中的反向传播法——BackPropagation:http://www.cnblogs.com/charlotte77/p/5629865.html 人脸识别图库:http://vis ...
- spring配置文件中导入约束的详细步骤
这里先以<beans>元素为例: 首先在eclipse中引入相关约束: 点击OK后,这个约束就被引入到eclipse中了,这一步的意义在于:就算你处于脱机情况下(不能联网),也能给你提示. ...
- Kibana6.x.x源码结构分析笔记
- HDU - 4763 找出特殊规律的串
在一个Text串中找出Pattern串E以满足EAEBE,A B可以是任意串 看一眼觉得woc好难,后来看一下样例AB为空也可以 找观察一下E既是前缀也是后缀,很容易联想到next 最优情况EEE,那 ...
- 剑指offer——面试题15:二进制中 1的个数
// 面试题15:二进制中1的个数 // 题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数.例如 // 把9表示成二进制是1001,有2位是1.因此如果输入9,该函数输出2. #inc ...
- 采用MQTT协议实现android消息推送(3)选ActiveMQ当服务端
官网: http://activemq.apache.org/ 1.简介 强壮.快速.客户端支持多种语言的mqtt服务端软件. 2.特性 MQTT v3.1.AMQP v1.0.Stomp .Open ...