使用Windows Form 製做一個簡易資源管理器

自制一個簡易資源管理器----TreeView控件ide

  第一步、新建project,進行基本設置;(Set as StartUp Project;View/Toolbox/TreeView)編碼

  

    第二步、開始添加節點spa

  添加命名空間using System.IO;    3d

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Threading.Tasks;
 9 using System.Windows.Forms;
10 using System.IO;
11 
12 namespace _ResouceManager_
13 {
14     public partial class Form1 : Form
15     {
16         public Form1()
17         {
18             InitializeComponent();
19         }
20 
21         private void Form1_Load(object sender, EventArgs e)
22         {
23             //這裏是資源管理器的根路徑
24             string strRoot = @"H:\自制資源管理器";//路徑
25             CreateParent(strRoot);
26         }
27 
28         private void CreateParent(string strRoot)
29         {
30             //建立根節點parent
31             TreeNode parent = new TreeNode();
32             DirectoryInfo di=new DirectoryInfo(strRoot);
33             parent.Text= di.Name ;
34             parent.Tag = di.FullName;
35 
36             //添加父節點
37             tvResouceManager.Nodes.Add(parent);
38 
39             //建立子節點
40             CreateChild(strRoot,parent);
41             //展開全部節點
42             parent.ExpandAll();
43 
44         }
45 
46         private void CreateChild(string path,TreeNode parent )
47         {
48             DirectoryInfo di = new DirectoryInfo(path);
49             //全部的子文件夾
50             DirectoryInfo[] dirs = di.GetDirectories();
51             //遍歷子文件夾
52             foreach(DirectoryInfo dir in dirs)
53             {
54                 //建立子節點
55                 TreeNode child = new TreeNode();
56                 child.Text = dir.Name;
57                 //child.Tag = dir.FullName;
58 
59                 //添加子節點
60                 parent.Nodes.Add(child);
61 
62                 //遞歸實現多級文件夾的遍歷、建立子節點、添加子節點
63                 CreateChild(dir.FullName,child);
64 
65                 //添加文件節點
66                 CreateFile(dir.FullName,child);                
67             }
68         }
69 
70         private void CreateFile(string p, TreeNode child)
71         {
72             DirectoryInfo di = new DirectoryInfo(p);
73             //路徑下的全部文件
74             FileInfo[] files = di.GetFiles();
75             //添加路徑下的全部文件
76             foreach(FileInfo file in files)
77             {
78                 //建立節點
79                 TreeNode tn = new TreeNode();
80                 tn.Text = file.Name;
81                // tn.Tag = file.FullName;
82 
83                 //添加節點
84                 child.Nodes.Add(tn);
85             }
86         }
87 
88     }
89 }
View Code

 

  這裏基本上完成了目錄添加,尚不能增長文件、刪除文件、移動文件等操做,還需繼續努力。code

 

  右邊是兩個文本框,能夠進行文本的編輯等(代碼不全)。orm

  首先在左邊的treeview中點擊某個節點,進行判斷點擊的是哪一個節點,若是是.doc或者是.txt就能夠編輯(其餘文件類型如PDF之類能夠本身寫代碼哦)。blog

  先將上述代碼中關於.Tag的註釋取消
遞歸

  

 1   private void tvResouceManager_AfterSelect(object sender, TreeViewEventArgs e)
 2         {
 3             if (e.Node.Tag == null) return;
 4             string path = e.Node.Tag.ToString();
 5             if(path.LastIndexOf(".doc")>0)
 6             {
 7                 //若是點擊的是.doc文檔,將標題寫入上文本框
 8                 txtTitle.Text = Path.GetFileNameWithoutExtension(e.Node.Text);
 9                 //文檔內容寫入下文本框,並使用指定的編碼規則進行讀文本操做
10                 //txtContent.Text = File.ReadAllText(path,Encoding.GetEncoding("utf-8"));
11                 txtContent.Text = File.ReadAllText(path, Encoding.Default);
12             }
13 
14         }
15 
16         private void btnSave_Click(object sender, EventArgs e)
17         {
18             if (tvResouceManager.SelectedNode == null) return;
19             if (tvResouceManager.SelectedNode.Tag == null) return;
20 
21             string path = tvResouceManager.SelectedNode.Tag.ToString();
22 
23             if (path.LastIndexOf(".doc") > 0)
24             {
25                 string content = txtContent.Text;
26                 File.WriteAllText(path, content, Encoding.Default);
27 
28                 MessageBox.Show("Save Successed");
29               
30             }
31         }
View Code
相關文章
相關標籤/搜索