zoukankan      html  css  js  c++  java
  • C#小型资源管理器

    搭建窗体

    左侧为TreeView   代码中tvDirectory为TreeView

    右侧为ListView   代码中lvDirectory为ListView  设置网格线为GridLines属性为True

    还有一个右键菜单contextMenuStrip,在ListView中绑定

    接下来创建一个类,存储文件信息

    1          //文件长度
    2          public float FileLength { get; set; }
    3          //文件名
    4          public string FileName { get; set; }
    5          //文件路径
    6          public string FilePath { get; set; }
    7          //文件类型
    8          public string FileType { get; set; }    

    在窗体类中写一个方法用来加载驱动器

    看你电脑的具体盘符了

     1         #region 加载驱动器
     2 
     3         private void LoadRootNode()
     4         {
     5             TreeNode tn = new TreeNode();
     6             tn.Text = "C:\";
     7             tn.Tag = "C:\";
     8             this.tvDirectory.Nodes.Add(tn);
     9 
    10 
    11             TreeNode tn1 = new TreeNode();
    12             tn1.Text = "D:\";
    13             tn1.Tag = "D:\";
    14             this.tvDirectory.Nodes.Add(tn1);
    15 
    16             TreeNode tn2 = new TreeNode();
    17             tn2.Text = "F:\";
    18             tn2.Tag = "F:\";
    19             this.tvDirectory.Nodes.Add(tn2);
    20 
    21             TreeNode tn3 = new TreeNode();
    22             tn3.Text = "G:\";
    23             tn3.Tag = "G:\";
    24             this.tvDirectory.Nodes.Add(tn3);
    25 
    26             TreeNode tn4 = new TreeNode();
    27             tn4.Text = "H:\";
    28             tn4.Tag = "H:\";
    29             this.tvDirectory.Nodes.Add(tn4);
    30         }
    31         #endregion

    在窗体类中创建一个方法,用来写绑定的方法

    1         private void BingInfo(TreeNode node)
    2         {
    3         }

    在该方法中书写如下内容

    1.绑定子目录

    1             DirectoryInfo directoryInfo = new DirectoryInfo(node.Tag.ToString());
    2             DirectoryInfo[] dirs = directoryInfo.GetDirectories();
    3             foreach (DirectoryInfo di in dirs)
    4             {
    5                 TreeNode temp = new TreeNode();
    6                 temp.Text = di.Name;
    7                 temp.Tag = di.FullName;
    8                 node.Nodes.Add(temp);
    9             }     

    2.绑定本目录中的文件

     1             FileInfo[] fileInfo = directoryInfo.GetFiles();
     2             List<MyFile> files = new List<MyFile>();
     3             foreach (FileInfo myFile in fileInfo)
     4             {
     5                 MyFile file = new MyFile();
     6                 file.FileName = myFile.Name;
     7                 file.FileLength = myFile.Length;
     8                 file.FileType = myFile.Extension;
     9                 file.FilePath = myFile.FullName;
    10                 files.Add(file);
    11             } 

    3.绑定ListView

     1             ListViewItem item = null;
     2             this.lvDirectory.Items.Clear();
     3             foreach (MyFile file in files)
     4             {
     5                 item = new ListViewItem();
     6                 item.Text = file.FileName;
     7                 item.SubItems.Add(file.FileLength.ToString());
     8                 item.SubItems.Add(file.FileType);
     9                 item.SubItems.Add(file.FilePath);
    10                 this.lvDirectory.Items.Add(item);
    11             } 

    在Tree View中的AfterSelect事件中写

    1             TreeNode node = this.tvDirectory.SelectedNode;
    2             this.BingInfo(node);

    在右键菜单的复制点击事件中写

     1             if (this.lvDirectory.SelectedItems.Count == 0)
     2             {
     3                 return;
     4             }
     5             //提示用户选择文件夹
     6             FolderBrowserDialog fbd = new FolderBrowserDialog();
     7             DialogResult result = fbd.ShowDialog();
     8 
     9             //源文件路径
    10             string sourcePath = lvDirectory.SelectedItems[0].SubItems[3].Text;
    11             //目标文件路径
    12             string desPath = null;
    13             //如果正确选择目标位置,执行复制操作
    14 
    15             if (result == DialogResult.OK)
    16             {
    17                 desPath = fbd.SelectedPath;
    18                 desPath += "\" + lvDirectory.SelectedItems[0].SubItems[0].Text;
    19                 //复制文件
    20                 File.Copy(sourcePath, desPath);
    21                 MessageBox.Show("复制成功!");
    22             }

    在右键菜单的删除点击事件中写

     1             if (this.lvDirectory.SelectedItems.Count == 0)
     2             {
     3                 return;
     4             }
     5             //要删除的文件
     6             string sourcePath = lvDirectory.SelectedItems[0].SubItems[3].Text;
     7             DialogResult result = MessageBox.Show(this, "确定要删除吗?", "警告!",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning);
     8              if (result == DialogResult.OK)
     9              {
    10                  File.Delete(sourcePath);
    11                  MessageBox.Show("删除成功!");
    12              }
    13              //移除
    14              this.lvDirectory.SelectedItems[0].Remove();

    最后在窗体Load事件中写

       LoadRootNode();
  • 相关阅读:
    jQuery中的一些操作
    laravel使用消息队列
    Laravel的开发环境Homestead的搭建与配置
    python爬虫学习
    配置文件
    sql根据时间差查询数据
    Oracle根据连接字符串获取库下的表列表、获取表结构
    Sql根据连接字符串获取库下的表列表、获取表结构
    判断网络连接
    线程锁,解决多线程并发问题
  • 原文地址:https://www.cnblogs.com/zhangxuuy/p/8891570.html
Copyright © 2011-2022 走看看