c#作的查找文件夾內內容的小工具

第一次寫博客有點激動啊QAQnode

  來新單位,一直沒活幹,公司代碼控制器太多,其中有不少文件夾,每次找一個控制器都老找不到,我又不肯意用VS的全局搜索,想着沒事就作了個查找控制器的小工具。代碼以下:工具

先添加了界面this

 

在pagelode裏首先須要構建一張虛擬表orm

private void Form1_Load(object sender, EventArgs e)blog

        {                       博客

            DataColumn d1 = new DataColumn("ID", typeof(int));string

            DataColumn d2 = new DataColumn("Name", typeof(string));it

            DataColumn d3 = new DataColumn("PID", typeof(string));io

            dt.Columns.Add(d1);object

            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;

        },

好了,看下效果

 

相關文章
相關標籤/搜索