让我们来一起写一个小型资源管理器吧
首先让我们来搭建窗口
,
然后创建一个信息类Files
1 public class Files 2 { 3 public float FileLength { get; set; }//长度 4 public string FileName{ get; set; }//文件名 5 public string FilePath { get; set; }//路径 6 public string FileType { get; set; }//类型 7 8 }
接下来写到当你点击左侧目录时,动态加载信息目录
效果如上图
1 private void tv1_AfterSelect(object sender, TreeViewEventArgs e) 2 { 3 listView1.Items.Clear();//清除内容 4 TreeNode node = this.tv1.SelectedNode;//获取选中节点 5 this.BindINfo(node);//调用获取方法 6 7 DirectoryInfo dic = new DirectoryInfo(node.Tag.ToString());//获取目录对象 8 9 FileInfo[] foInfos = dic.GetFiles();//获取目录文件的集合 10 List<Files> list = new List<Files>();//保存信息表 11 foreach (FileInfo file in foInfos)//循环将其遍历,赋值到list集合中 12 { 13 Files fl = new Files(); 14 fl.FileName = file.Name; 15 float a = file.Length; 16 fl.FileLength = float.Parse(Math.Round(a/1024,2).ToString());//将内存转换为KB 17 fl.FileType = file.Extension; 18 fl.FilePath = file.FullName; 19 list.Add(fl); 20 21 } 22 foreach (Files em in list)//循环将list内的信息绑定到listview 23 { 24 ListViewItem item = new ListViewItem(em.FileName); 25 item.SubItems.Add(em.FileLength.ToString()); 26 item.SubItems.Add(em.FileType); 27 item.SubItems.Add(em.FilePath); 28 listView1.Items.Add(item); 29 } 30 } 31 32 private void BindINfo(TreeNode node) 33 { 34 DirectoryInfo dic=new DirectoryInfo(node.Tag.ToString()); 35 DirectoryInfo[] dirs = dic.GetDirectories(); 36 foreach (DirectoryInfo item in dirs)//循环获取当前目录的子目录 37 { 38 TreeNode temp=new TreeNode(); 39 temp.Text = item.Name; 40 temp.Tag = item.FullName;//详细地址 41 node.Nodes.Add(temp); 42 } 43 44 }
然后是编写右键快捷菜单
复制文件时,选择文件
1 private void 复制ToolStripMenuItem_Click(object sender, EventArgs e) 2 { 3 if (listView1.SelectedItems.Count==0)//数量为零时,重新执行 4 { 5 return; 6 } 7 FolderBrowserDialog fdb = new FolderBrowserDialog();//打开选择器 8 DialogResult result = fdb.ShowDialog(); 9 string yuanPath = listView1.SelectedItems[0].SubItems[3].Text;//原地址 10 string newPath = null; 11 if (result==DialogResult.OK) 12 { 13 newPath = fdb.SelectedPath; 14 newPath += "\" + listView1.SelectedItems[0].SubItems[0].Text;//给新地址赋值 15 File.Copy(yuanPath,newPath);//执行复制 16 MessageBox.Show("复制成功"); 17 } 18 }
删除文件
1 private void 删除ToolStripMenuItem_Click(object sender, EventArgs e) 2 { 3 if (listView1.SelectedItems.Count == 0)//数量为零时,重新执行 4 { 5 return; 6 } 7 string yuanPath = listView1.SelectedItems[0].SubItems[3].Text;//地址 8 DialogResult result = MessageBox.Show("确定要删除吗", "提示", MessageBoxButtons.YesNo); 9 if (result==DialogResult.Yes)//点击确定时,执行删除 10 { 11 File.Delete(yuanPath); 12 } 13 listView1.SelectedItems[0].Remove();//移除该项 14 }
到此就完成了!
需要注意的是,删除文件是真的彻底删除,找不回来的!!!