第一次写博客有点激动啊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;

},

好了,看下效果

最新文章

  1. 原生ajax实现登录(一部分代码)
  2. JVM常量池
  3. CCNA 6.6
  4. swfupload使用说明
  5. java基础IO流综合加习题
  6. Git客户端SourceTree回滚到远程仓库和切换分支
  7. Python3基础 使用clear() 清空一个字典
  8. linux vi 操作
  9. Spring Boot 负载均衡之外置session状态保存
  10. tomcat插件使用
  11. jenkins持续集成:jenkins+SVN
  12. 【C语言】 二叉树的基本运算
  13. python isinstance()与type()的区别
  14. css3实现 依次出现三个点(一般用于提示加载中。。。 提交中。。。)
  15. 【LeetCode445】 Add Two Numbers II★★
  16. 2017 清北济南考前刷题Day 7 afternoon
  17. Oracle 12c on Solaris 10 安装文档
  18. Laravel 使用 Provider 为程序提供运行时配置服务
  19. python3内置函数大全
  20. sql数据库表容量

热门文章

  1. NSURLConnection 网络请求
  2. java处理中国气象数据,提取汇总陕西地区24小时各观测点的数据(csv格式)
  3. MVC进阶篇(二)—路由机制
  4. kali linux之BurpSuite
  5. cf555e
  6. sass的基本语法与使用
  7. [Swift实际操作]九、完整实例-(2)在Xcode 10中创建新项目
  8. SHELL编程之条件判断
  9. 190225Redis
  10. Touchable类组件