在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → C# 文件管理器(仿windows资源管理器)源码下载

C# 文件管理器(仿windows资源管理器)源码下载

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:0.10M
  • 下载次数:75
  • 浏览次数:1220
  • 发布时间:2016-04-11
  • 实例类别:C#语言基础
  • 发 布 人:白白笨笨
  • 文件格式:.rar
  • 所需积分:2
 相关标签: 文件 管理

实例介绍

【实例简介】

开发环境:Microsoft Visual Studio 2005 winxp

开发语言:C#

功能特点:

1.使用VS2005 的WinForm程序
2.包括TXET文本的新建、复制、粘贴、删除和撤销等文件操作。
3.对文本字体的操作:粗体、下划线和斜体。
4.包括文本夹的新建、复制、粘贴、删除等文件夹操作。
5.五种查看方式:列表、小图标、大图标、标题和详细。

注意事项:

1.本程序所有数据采用文本文件保存。
2.程序默认路径为:我的电脑。
3.如果发现程序的Bug,或者有疑问,建议或意见,请联系我。


【实例截图】


【核心代码】

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Collections;
using FileManager.Class;

namespace FileManager
{
    public partial class Form1 : Form
    {
        string oldDri = "";
        string oldFile = "";

        bool a;//判断操作是“复制”还是“剪切”

        System.Collections.Specialized.StringCollection CurPath = new System.Collections.Specialized.StringCollection();    //CurPath集合属性存储了每一级目录的全路径

        public Form1()
        {//初始化界面
            InitializeComponent();

            try
            {
                tb_currentpath.Text = "我的电脑";       //初始路径
                lv_allinfo.Clear();
                lv_allinfo.View = View.Details;         //ListView以详细数据方式显示
                lv_allinfo.Columns.Add("本地磁盘", lv_allinfo.Width / 3, HorizontalAlignment.Left);     //增加一个显示字段,显示磁盘名
                string[] Drv = Directory.GetLogicalDrives();        //将获得的所有磁盘列表存入数组Drv
                int DrvCnt = Drv.Length;                            //获得数组长度
                for (int i = 0; i < DrvCnt; i  )
                {
                    ListViewItem lvi = new ListViewItem();          //实例化一个ListViewItem的对象
                    lvi.Text = "驱动器"   Drv[i];                   //设置磁盘名称
                    lvi.ImageIndex = 3;                             //设置图标
                    lvi.Tag = Drv[i];                               //通过Tag保存当前的完全路径
                    lv_allinfo.Items.Add(lvi);
                }
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        void FillFilesView(string FullName)
        {//获得当前目录文件夹信息及子目录文件信息并显示在ListView上
            lv_allinfo.Clear();
            lv_allinfo.View = View.Details;
            lv_allinfo.Columns.Add("名称", lv_allinfo.Width / 3, HorizontalAlignment.Left);             //增加一个显示字段,显示文件名称
            lv_allinfo.Columns.Add("类型", lv_allinfo.Width / 6, HorizontalAlignment.Center);
            lv_allinfo.Columns.Add("大小(字节)", lv_allinfo.Width / 6, HorizontalAlignment.Right);
            lv_allinfo.Columns.Add("最后访问时间", lv_allinfo.Width / 3, HorizontalAlignment.Left);
            DirectoryInfo CurDir = new DirectoryInfo(FullName);                 //得到需要显示内容列表的目录信息
            DirectoryInfo[] dirs = CurDir.GetDirectories();                     //得到当前目录中的所有文件夹(子目录)
            FileInfo[] files = CurDir.GetFiles();                               //得到当前目录中的所有文件

            foreach (DirectoryInfo dir in dirs)
            {
                ListViewItem lvi = new ListViewItem();
                lvi.Text = dir.Name;                    //设置文件夹名称
                lvi.Tag = dir.FullName;                 //设置文件夹的完全路径
                lvi.ImageIndex = 0;                     //设置文件夹图标
                lvi.SubItems.Add("文件夹");             //设置类型
                lvi.SubItems.Add("");
                lvi.SubItems.Add(dir.LastAccessTime.ToString());        //设置文件夹最后访问时间
                lv_allinfo.Items.Add(lvi);
            }

            foreach (FileInfo file in files)
            {
                ListViewItem lvi = new ListViewItem();
                lvi.Text = file.Name;
                if (file.Extension == ".txt")       //判断文件的后缀名是否为.txt
                {
                    lvi.ImageIndex = 1;
                }
                else
                {
                    lvi.ImageIndex = 2;
                }
                lvi.Tag = file.FullName;        //获得文件的完全路径
                lvi.SubItems.Add("文件");       //设置类型
                lvi.SubItems.Add(file.Length.ToString());   //设置文件大小
                lvi.SubItems.Add(file.LastAccessTime.ToString());       //设置文件最后访问时间
                lv_allinfo.Items.Add(lvi);
            }
        }

        private void lv_allinfo_DoubleClick(object sender, EventArgs e)
        {//ListView双击
            try
            {
                string FullName = lv_allinfo.SelectedItems[0].Tag.ToString();       //获得选中项的全部名称
                if (lv_allinfo.SelectedItems[0].ImageIndex == 1)                    //如果选中的是txt
                {
                    EditTxt dlgEditTxt = new EditTxt();
                    dlgEditTxt.lb_fullname.Text = FullName;
                    dlgEditTxt.ShowDialog(this);
                }
                else
                {
                    if (lv_allinfo.SelectedItems[0].ImageIndex == 2)        //如果选中的是其他文件
                    {
                        System.Diagnostics.Process.Start(FullName);         //通过系统函数启动该文件
                    }
                    else
                    {
                        tb_currentpath.Text = FullName;         //更新路径显示
                        FillFilesView(FullName);                //更新ListView
                        CurPath.Add(FullName);                  //将当前路径存入CurPath
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void bt_back_Click(object sender, EventArgs e)
        {//返回上一层
            try
            {
                if (CurPath.Count > 1)      //如果当前所在位置不是根目录
                {
                    string FullName = CurPath[CurPath.Count - 2].ToString();    //获得上一级目录的路径
                    tb_currentpath.Text = FullName;                             //更新路径显示
                    FillFilesView(FullName);                                    //更新ListView
                    CurPath.RemoveAt(CurPath.Count - 1);                        //从CurPath中删除当前目录
                }
                else
                {
                    if (CurPath.Count == 1)         //如果在根目录
                    {
                        CurPath.RemoveAt(CurPath.Count - 1);    //从CurPath中删除当前目录
                        tb_currentpath.Text = "我的电脑";  //更新路径显示
                        lv_allinfo.Clear();
                        lv_allinfo.View = View.Details;
                        lv_allinfo.Columns.Add("本地磁盘", lv_allinfo.Width / 3, HorizontalAlignment.Left);
                        string[] Drv = Directory.GetLogicalDrives();        //获取当前磁盘列表并存入数组
                        for (int i = 0; i < Drv.Length; i  )
                        {
                            ListViewItem lvi = new ListViewItem();
                            lvi.Text = "驱动器"   Drv[i];
                            lvi.ImageIndex = 3;
                            lvi.Tag = Drv[i];
                            lv_allinfo.Items.Add(lvi);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void NewFolder_Click(object sender, EventArgs e)
        {//新建文件夹
            try
            {
                NewFolder folderDlg = new NewFolder();              //实例化一个NewFolder对象
                folderDlg.lbParentPath.Text = CurPath[CurPath.Count - 1];   //NewFolder上显示当前路径
                if (folderDlg.ShowDialog() == DialogResult.OK)              //弹出对话框
                {
                    string CurFullPath = CurPath[CurPath.Count - 1];        //获取当前路径
                    FillFilesView(CurFullPath);                             //刷新ListView
                }
                folderDlg.Dispose();                //释放对话框
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void NewFile_Click(object sender, EventArgs e)
        {//新建文件
            try
            {
                NewFile fileDlg = new NewFile();            //实例化一个NewFile对象
                fileDlg.lbParentPath.Text = CurPath[CurPath.Count - 1];
                if (fileDlg.ShowDialog() == DialogResult.OK)
                {
                    string CurFullPath = CurPath[CurPath.Count - 1];
                    FillFilesView(CurFullPath);
                }
                fileDlg.Dispose();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void Delete_Click(object sender, EventArgs e)
        {//删除
            try
            {
                if (lv_allinfo.SelectedItems.Count > 0)
                {
                    DialogResult ret = MessageBox.Show("是否确认删除所选?", "确定删除", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                    {
                        if (lv_allinfo.SelectedItems[0].SubItems[1].Text == "文件夹")   //如果选中项的类型为“文件夹”
                        {
                            string strDir = lv_allinfo.SelectedItems[0].Tag.ToString();          //获得选中的文件夹的全部名称
                            Directory.Delete(strDir, true);                                    //删除选中的文件夹
                        }
                        else
                        {
                            string strFile = lv_allinfo.SelectedItems[0].Tag.ToString();
                            File.Delete(strFile);
                        }
                        string CurFullPath = CurPath[CurPath.Count - 1];            //获得当前路径
                        FillFilesView(CurFullPath);                         //刷新
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void Exit_Click(object sender, EventArgs e)
        {//退出
            Application.Exit();
        }

        private void contextmenudelete_Click(object sender, EventArgs e)
        {//右键删除
            try
            {
                if (lv_allinfo.SelectedItems.Count > 0)
                {
                    DialogResult ret = MessageBox.Show("是否确认删除所选?", "确定删除", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                    {
                        for (int i = 0; i < lv_allinfo.SelectedItems.Count; i  )
                        {
                            if (lv_allinfo.SelectedItems[i].SubItems[1].Text == "文件夹")   //如果选中项的类型为“文件夹”
                            {
                                string strDir = lv_allinfo.SelectedItems[i].Tag.ToString();          //获得选中的文件夹的全部名称
                                Directory.Delete(strDir, true);                                    //删除选中的文件夹(true不保护)
                            }
                            else
                            {
                                string strFile = lv_allinfo.SelectedItems[i].Tag.ToString();
                                File.Delete(strFile);
                            }
                        }
                        string CurFullPath = CurPath[CurPath.Count - 1];            //获得当前路径
                        FillFilesView(CurFullPath);                         //刷新
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void contextmenufolder_Click(object sender, EventArgs e)
        {//右键添加文件夹
            try
            {
                NewFolder folderDlg = new NewFolder();
                folderDlg.lbParentPath.Text = CurPath[CurPath.Count - 1];
                if (folderDlg.ShowDialog() == DialogResult.OK)
                {
                    string CurFullPath = CurPath[CurPath.Count - 1];
                    FillFilesView(CurFullPath);
                }
                folderDlg.Dispose();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void contextmenufile_Click(object sender, EventArgs e)
        {//右键添加文件
            try
            {
                NewFile fileDlg = new NewFile();
                fileDlg.lbParentPath.Text = CurPath[CurPath.Count - 1];
                if (fileDlg.ShowDialog() == DialogResult.OK)
                {
                    string CurFullPath = CurPath[CurPath.Count - 1];
                    FillFilesView(CurFullPath);
                }
                fileDlg.Dispose();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void BigToolStripMenuItem_Click(object sender, EventArgs e)
        {//大图标
            lv_allinfo.View = View.LargeIcon;
        }
        private void SmallToolStripMenuItem_Click(object sender, EventArgs e)
        {//小图标
            lv_allinfo.View = View.SmallIcon;
        }
        private void ListToolStripMenuItem_Click(object sender, EventArgs e)
        {//列表
            lv_allinfo.View = View.List;
        }

        private void DetailsToolStripMenuItem_Click(object sender, EventArgs e)
        {//详细
            lv_allinfo.View = View.Details;
        }

        private void TitleToolStripMenuItem_Click(object sender, EventArgs e)
        {//文件名
            lv_allinfo.View = View.Tile;
        }

        private void copy_Click(object sender, EventArgs e)
        {//复制
            try
            {
                a = true;
                if (lv_allinfo.SelectedItems.Count == 0)
                {
                    return;
                }
                else
                {
                    oldDri = "";
                    oldFile = "";
                    if (lv_allinfo.SelectedItems[0].SubItems[1].Text == "文件夹")
                    {
                        oldDri = lv_allinfo.SelectedItems[0].Tag.ToString();
                    }
                    else
                    {
                        oldFile = lv_allinfo.SelectedItems[0].Tag.ToString();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        /// <summary>
        /// 复制文件到指定目录
        /// </summary>
        /// <param name="strDir"></param>
        /// <param name="FilePath"></param>
        private void CopyFile(string strDir, string FilePath)
        {
            string FolderName = FilePath.Substring(Folder.DirectoryName(FilePath));
            if (Directory.Exists(strDir   "\\"   FolderName))
            {
                Class.Txt.DeleteFile(strDir   "\\"   FolderName);   //若文件存在,删除
                Class.Folder.CreateDir(FilePath, strDir);            //复制文件
            }
            else
            {
                Class.Txt.CreateText(FolderName, strDir);
            }
        }
        /// <summary>
        /// 复制文件夹到指定目录
        /// </summary>
        /// <param name="strDir"></param>
        /// <param name="FolderPath"></param>
        private void CopyDirectory(string strDir, string FolderPath)
        {
            string FolderName = FolderPath.Substring(Class.Folder.DirectoryName(FolderPath));
            if (Directory.Exists(strDir   "\\"   FolderName))
            {
                Class.Folder.DeleteFolder(strDir   "\\"   FolderName, true);
                Class.Folder.CreateDir(strDir, FolderName);
            }
            else
            {
                Class.Folder.CreateDir(strDir, FolderName);
            }
            DirectoryInfo DirectoryArray = Class.Folder.GetDir(FolderPath);
            FileInfo[] Files = DirectoryArray.GetFiles();
            DirectoryInfo[] Directorys = DirectoryArray.GetDirectories();
            foreach (FileInfo inf in Files)
            {
                Class.Folder.CopyFile(FolderPath, inf.Name, strDir   "\\"   FolderName);
            }
            foreach (DirectoryInfo Dir in Directorys)
            {
                if (Dir.Name != FolderName)
                    CopyDirectory(strDir   "\\"   FolderName, FolderPath   "\\"   Dir.Name);
            }
        }

        ArrayList path = new ArrayList();
        ArrayList oname = new ArrayList();
        ArrayList imgPath = new ArrayList();
        private void cut_Click(object sender, EventArgs e)
        {//剪切
            for (int i = 0; i < lv_allinfo.SelectedItems.Count; i  )
            {
                path.Add(lv_allinfo.SelectedItems[i].Tag);
                oname.Add(lv_allinfo.SelectedItems[i].Text);
                imgPath.Add(lv_allinfo.SelectedItems[i].ImageIndex);
                a = false;
            }
        }

        private void paste_Click(object sender, EventArgs e)
        {//粘贴
            try
            {
                if (tb_currentpath.Text == "我的电脑")
                {
                    return;
                }
                else
                {
                    if (a)
                    {
                        string strDir = tb_currentpath.Text;
                        if (oldDri != "")
                        {
                            CopyDirectory(strDir, oldDri);
                        }
                        else
                        {
                            CopyFile(strDir, oldFile);
                        }
                        FillFilesView(tb_currentpath.Text);
                    }
                    else
                    {
                        for (int i = 0; i < path.Count; i  )
                        {
                            if (Convert.ToInt32(imgPath[i].ToString()) == 0)
                            {
                                Directory.Move(path[i].ToString(), CurPath[CurPath.Count - 1]   "\\"   oname[i]);
                            }
                            else if (Convert.ToInt32(imgPath[i].ToString()) == 1)
                            {
                                Directory.Move(path[i].ToString(), CurPath[CurPath.Count - 1]   "\\"   oname[i]);
                            }
                        }
                        FillFilesView(CurPath[CurPath.Count - 1]);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}

标签: 文件 管理

实例下载地址

C# 文件管理器(仿windows资源管理器)源码下载

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警