版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实习九资源管理器程序设计一、实习目的:了解Environment类、Directory类、File类的常用属性和方法。了解容器控件的应用。掌握“资源管理器”功能的实现方法。掌握TreeView控件、ListView控件和SplitContainer控件的使用方法。熟练掌握对程序设计异常处理的方法。二、实习要求:1.参照Windows资源管理器,实现以下几个功能:获取并显示程序运行是主机的系统文件层次结构。能展开和折叠显示文件信息。显示当前选择文件路径和文件以及文件夹信息。2.资源管理器程序的操作主要有以下几个步骤:(1)程序运行初始情况如图9-1所示,左侧树形结构获取主机文件系统信息,图9-1资源管理器运算效果图并按“桌面”、“我的文档”以及计算机一级盘符显示;右侧显示文件详细内容。(2)单击左侧树形结构的“+”可以显示基下层文件的详细结构,“-”则对已展开信息折叠,以方便查看文件夹的结构层次。(3)单击工具栏中按钮“”可以选择右侧显示的文件夹类型,有“缩略图”、“列表”、“图标”三种方式可供选择。(4)在程序状态栏会显示当前选中的文件夹的路径、目录数以及所包含文件数。三、实习方法与步骤:1、启动VisualStudio2008应用程序,新建Windows窗体应用程序项目,设置项目名称和位置。2、如图9-1设置主窗体(frmMain)。表9-1主窗体属性设置属性属性值说明NamefrmMain窗体类名Text资源管理器标题栏文字3、添加工具栏(ToolStrip)控件,依次添加“”三个工具按钮。表9-2toolStrip1各对象及其属性设置对象NameTextDisplayStyle说明ToolStripButtontsbUp回上一级Image返回上一级ToolStripButtontsbShowTree文件夹ImageAndText文件夹方式ToolStripSplitButtontsbView查看方式Image选择查看方式ToolStripMenuItemtsbMiniature缩略图Text缩略图显示tsbIcon图标Text图标显示tsbList列表Text列表显示Iconic1=myExtractIcon("%SystemRoot%\\system32\\shell32.dll",5);TreeImageList.Images.Add(ic1);Iconic2=myExtractIcon("%SystemRoot%\\system32\\shell32.dll",7);TreeImageList.Images.Add(ic2);Iconic3=myExtractIcon("%SystemRoot%\\system32\\shell32.dll",11);TreeImageList.Images.Add(ic3);Iconic4=myExtractIcon("%SystemRoot%\\system32\\shell32.dll",3);TreeImageList.Images.Add(ic4);Iconic5=myExtractIcon("%SystemRoot%\\system32\\shell32.dll",4);TreeImageList.Images.Add(ic5);Iconic6=myExtractIcon("%SystemRoot%\\system32\\shell32.dll",101);TreeImageList.Images.Add(ic6);Iconic7=myExtractIcon("%SystemRoot%\\system32\\shell32.dll",34);TreeImageList.Images.Add(ic7);}#endregion(3)生成目录树方法:#region生成目录树publicvoidiniDriectory(TreeNodee){e.Nodes.Clear();listView1.Items.Clear();try{string[]directorys=DirectoryManager.getDirectorys(e.Tag.ToString());this.tspslblNodes.Text="目录数量:"+directorys.Length;foreach(stringvarindirectorys){intindex=var.LastIndexOf('\\')+1;stringdir=var.Substring(index);TreeNodea=newTreeNode(dir,4,5);a.Nodes.Add(newTreeNode(""));e.Nodes.Add(a);a.Tag=var;}iniList(e);listView1.Sort();}catch(Exceptionex){return;//throwex;}}#endregion(4)生成列表方法:先生成目录列表,再生成文件列表。#region生成列表publicvoidiniView(TreeNodee){try{FileInfo[]files=getFiles(e.Tag.ToString());this.tspslblFile.Text="文件数量:"+files.Length;foreach(FileInfovarinfiles){listView1.Items.Add(var.Name);}listView1.Sort();}catch(Exceptionex){return;//throwex;tspslblNodes.Text="目录数量:0";tspslblFile.Text="文件数量:0";}}#endregion#region生成列表2publicvoidiniList(TreeNodetn){this.ListViewImageList2.Images.Clear();this.ListViewImageList.Images.Clear();ListViewImageList2.ImageSize=newSize(32,32);listView1.LargeImageList=ListViewImageList;listView1.SmallImageList=ListViewImageList;Iconic0=myExtractIcon("%SystemRoot%\\system32\\shell32.dll",3);ListViewImageList.Images.Add(ic0);ListViewImageList2.Images.Add(ic0);listView1.Clear();//设置列表框的表头listView1.Columns.Add("文件名",160,HorizontalAlignment.Left);listView1.Columns.Add("文件类型",80,HorizontalAlignment.Left);listView1.Columns.Add("创建时间",120,HorizontalAlignment.Left);listView1.Columns.Add("访问时间",200,HorizontalAlignment.Left);listView1.Columns.Add("文件大小",120,HorizontalAlignment.Left);stringstrPath=tn.Tag.ToString();//获得当前目录下的所有文件DirectoryInfocurDir=newDirectoryInfo(strPath);//创建目录FileInfo[]dirFiles;try{dirFiles=curDir.GetFiles();}catch{return;}string[]arrSubItem=newstring[5];intiCount=0;inticonIndex=1;foreach(FileInfofileInfoindirFiles){stringstrFileName=fileInfo.Name;arrSubItem[0]=strFileName;arrSubItem[1]=fileInfo.Extension;arrSubItem[2]=fileInfo.CreationTime.ToString();arrSubItem[3]=fileInfo.LastAccessTime.ToString();arrSubItem[4]=fileInfo.Length+"字节";stringstr=fileInfo.FullName;try{SetIcon(ListViewImageList,str,false);SetIcon(ListViewImageList2,str,true);}catch(Exceptionex){MessageBox.Show(ex.Message,"错误提示",0,MessageBoxIcon.Error);}ListViewItemLiItem=newListViewItem(arrSubItem,iconIndex);LiItem.Tag=fileInfo.FullName;listView1.Items.Insert(iCount,LiItem);iCount++;iconIndex++;}this.tspslblFile.Text="文件数量:"+iCount.ToString();intiItem=0;DirectoryInfoDir=newDirectoryInfo(strPath);foreach(DirectoryInfodiinDir.GetDirectories()){ListViewItemLiItem=newListViewItem(di.Name,0);LiItem.Tag=di.FullName;listView1.Items.Insert(iItem,LiItem);iItem++;}}#endregion(5)生成驱动器树:#region生成驱动器树publicvoidiniTree(){stringdesktop=Environment.GetFolderPath(Environment.SpecialFolder.Desktop);TreeNodedesk=newTreeNode("桌面",7,7);desk.Nodes.Add(newTreeNode(""));desk.Tag=desktop;treeView1.Nodes.Add(desk);stringdocument=Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);TreeNodedocu=newTreeNode("我的文档");docu.Nodes.Add(newTreeNode(""));docu.Tag=document;treeView1.Nodes.Add(docu);TreeNoderoot=newTreeNode("我的电脑",0,0);root.Tag="我的电脑";TreeNodea=null;TreeNodetmp=null;treeView1.Nodes.Add(root);try{string[]devices=DirectoryManager.getDevices();foreach(stringvarindevices){a=newTreeNode(var,2,2);tmp=newTreeNode();a.Nodes.Add(tmp);a.Tag=var;root.Nodes.Add(a);}root.Expand();}catch(Exceptionex){return;//throwex;}}#endregion(6)设置图标:#region网络资源[DllImport("Shell32.dll")]publicstaticexternintExtractIcon(IntPtrh,stringstrx,intii);[DllImport("Shell32.dll")]publicstaticexternintSHGetFileInfo(stringpszPath,uintdwFileAttributes,refSHFILEINFOpsfi,uintcbFileInfo,uintuFlags);publicstructSHFILEINFO{publicIntPtrhIcon;publicintiIcon;publicuintdwAttributes;publiccharszDisplayName;publiccharszTypeName;}protectedvirtualIconmyExtractIcon(stringFileName,intiIndex){try{IntPtrhIcon=(IntPtr)ExtractIcon(this.Handle,FileName,iIndex);if(!hIcon.Equals(null)){Iconicon=Icon.FromHandle(hIcon);returnicon;}}catch(Exceptionex){MessageBox.Show(ex.Message,"错误提示",0,MessageBoxIcon.Error);}returnnull;}protectedvirtualvoidSetIcon(ImageListimageList,stringFileName,booltf){SHFILEINFOfi=newSHFILEINFO();if(tf==true){intiTotal=(int)SHGetFileInfo(FileName,0,reffi,100,16640);try{if(iTotal>0){Iconic=Icon.FromHandle(fi.hIcon);imageList.Images.Add(ic);}}catch(Exceptionex){MessageBox.Show(ex.Message,"错误提示",0,MessageBoxIcon.Error);}}else{intiTotal=(int)SHGetFileInfo(FileName,0,reffi,100,257);try{if(iTotal>0){Iconic=Icon.FromHandle(fi.hIcon);imageList.Images.Add(ic);}}catch(Exceptionex){MessageBox.Show(ex.Message,"错误提示",0,MessageBoxIcon.Error);}}}#endregion(7)窗体装入(Load)事件:显示最高级别的资源管理器。privatevoidfrmMain_Load(objectsender,EventArgse){iniTree();getSysIco();treeView1.ImageList=this.TreeImageList;}(8)treeView1的AfterExpand事件,在展开树结点后发生的事件:privatevoidtreeView1_AfterExpand(objectsender,TreeViewEventArgse){if("我的电脑"!=e.Node.Text){iniDriectory(e.Node);}}(9)treeView1的AfterSelect事件,在选定树结点后发生的事件:privatevoidtreeView1_AfterSelect(objectsender,TreeViewEventArgse){if("我的电脑"!=e.Node.Text){tspslblPath.Text="当前路径:"+e.Node.Tag.ToString();iniDriectory(e.Node);}}(10)工具按钮tsbUp的Click事件,实现向上级目录显示:privatevoidtsbUp_Click(objectsender,EventArgse){TreeNodenode=treeView1.SelectedNode;TreeNodeParentNode
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年森林资源保护合作项目预算调整通知4篇范文
- 面试技巧与注意事项手册
- 企业会议效率提升六项技巧指南
- 质量管理部门职责划分更新通知函(3篇)范文
- 滑雪装备使用手册修改通知7篇
- 世界的色彩:多彩文化的小学交流会小学主题班会课件
- 2026年Q3教育行业市场分析报告征集通知5篇
- 2026年供应商资质审核流程探讨函7篇范本
- 催收体育场馆运营款审批催办函(5篇)
- 钢铁企业设备维护工程师绩效考评表
- 2026湖北恩施州利川市选调市外教师30人笔试题库及完整答案详解【夺冠系列】
- 2026年育种和育苗行业创新技术报告
- 2026年邮政业务(营销)员高级理论知识试卷及答案
- 南充市公安局2026年上半年第二次公开招聘警务辅助人员(20人)笔试参考题库及答案详解
- 消防救援支队公开招聘工作人员笔试试题(含详细答案)
- XX区企业厂界噪声监测报告
- 2026年北京公务员(行测)考试真题及答案
- 格林巴利综合症讲课
- 2026年供应链管理三级试题及答案
- 山东潍坊市2025-2026学年高一年级上册学业质量检测生物(解析版)
- 公路养护工程管理办法
评论
0/150
提交评论