实例介绍
【实例简介】
开发环境: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); } } } }
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论