自制一個簡易資源管理器----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 }
這裏基本上完成了目錄添加,尚不能增長文件、刪除文件、移動文件等操做,還需繼續努力。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 }