實(shí)習(xí)九資源管理器_第1頁(yè)
實(shí)習(xí)九資源管理器_第2頁(yè)
實(shí)習(xí)九資源管理器_第3頁(yè)
實(shí)習(xí)九資源管理器_第4頁(yè)
實(shí)習(xí)九資源管理器_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

實(shí)習(xí)九資源管理器程序設(shè)計(jì)一、實(shí)習(xí)目的:了解Environment類、Directory類、File類的常用屬性和方法。了解容器控件的應(yīng)用。掌握“資源管理器”功能的實(shí)現(xiàn)方法。掌握TreeView控件、ListView控件和SplitContainer控件的使用方法。熟練掌握對(duì)程序設(shè)計(jì)異常處理的方法。二、實(shí)習(xí)要求:1.參照Windows資源管理器,實(shí)現(xiàn)以下幾個(gè)功能:獲取并顯示程序運(yùn)行是主機(jī)的系統(tǒng)文件層次結(jié)構(gòu)。能展開和折疊顯示文件信息。顯示當(dāng)前選擇文件路徑和文件以及文件夾信息。2.資源管理器程序的操作主要有以下幾個(gè)步驟:(1)程序運(yùn)行初始情況如圖9-1所示,左側(cè)樹形結(jié)構(gòu)獲取主機(jī)文件系統(tǒng)信息,圖9-1資源管理器運(yùn)算效果圖并按“桌面”、“我的文檔”以及計(jì)算機(jī)一級(jí)盤符顯示;右側(cè)顯示文件詳細(xì)內(nèi)容。(2)單擊左側(cè)樹形結(jié)構(gòu)的“+”可以顯示基下層文件的詳細(xì)結(jié)構(gòu),“-”則對(duì)已展開信息折疊,以方便查看文件夾的結(jié)構(gòu)層次。(3)單擊工具欄中按鈕“”可以選擇右側(cè)顯示的文件夾類型,有“縮略圖”、“列表”、“圖標(biāo)”三種方式可供選擇。(4)在程序狀態(tài)欄會(huì)顯示當(dāng)前選中的文件夾的路徑、目錄數(shù)以及所包含文件數(shù)。三、實(shí)習(xí)方法與步驟:1、啟動(dòng)VisualStudio2008應(yīng)用程序,新建Windows窗體應(yīng)用程序項(xiàng)目,設(shè)置項(xiàng)目名稱和位置。2、如圖9-1設(shè)置主窗體(frmMain)。表9-1主窗體屬性設(shè)置屬性屬性值說(shuō)明NamefrmMain窗體類名Text資源管理器標(biāo)題欄文字3、添加工具欄(ToolStrip)控件,依次添加“”三個(gè)工具按鈕。表9-2toolStrip1各對(duì)象及其屬性設(shè)置對(duì)象NameTextDisplayStyle說(shuō)明ToolStripButtontsbUp回上一級(jí)Image返回上一級(jí)ToolStripButtontsbShowTree文件夾ImageAndText文件夾方式ToolStripSplitButtontsbView查看方式Image選擇查看方式ToolStripMenuItemtsbMiniature縮略圖Text縮略圖顯示tsbIcon圖標(biāo)Text圖標(biāo)顯示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="目錄數(shù)量:"+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="文件數(shù)量:"+files.Length;foreach(FileInfovarinfiles){listView1.Items.Add(var.Name);}listView1.Sort();}catch(Exceptionex){return;//throwex;tspslblNodes.Text="目錄數(shù)量:0";tspslblFile.Text="文件數(shù)量: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();//設(shè)置列表框的表頭listView1.Columns.Add("文件名",160,HorizontalAlignment.Left);listView1.Columns.Add("文件類型",80,HorizontalAlignment.Left);listView1.Columns.Add("創(chuàng)建時(shí)間",120,HorizontalAlignment.Left);listView1.Columns.Add("訪問(wèn)時(shí)間",200,HorizontalAlignment.Left);listView1.Columns.Add("文件大小",120,HorizontalAlignment.Left);stringstrPath=tn.Tag.ToString();//獲得當(dāng)前目錄下的所有文件DirectoryInfocurDir=newDirectoryInfo(strPath);//創(chuàng)建目錄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+"字節(jié)";stringstr=fileInfo.FullName;try{SetIcon(ListViewImageList,str,false);SetIcon(ListViewImageList2,str,true);}catch(Exceptionex){MessageBox.Show(ex.Message,"錯(cuò)誤提示",0,MessageBoxIcon.Error);}ListViewItemLiItem=newListViewItem(arrSubItem,iconIndex);LiItem.Tag=fileInfo.FullName;listView1.Items.Insert(iCount,LiItem);iCount++;iconIndex++;}this.tspslblFile.Text="文件數(shù)量:"+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)生成驅(qū)動(dòng)器樹:#region生成驅(qū)動(dòng)器樹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)設(shè)置圖標(biāo):#region網(wǎng)絡(luò)資源[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,"錯(cuò)誤提示",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,"錯(cuò)誤提示",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,"錯(cuò)誤提示",0,MessageBoxIcon.Error);}}}#endregion(7)窗體裝入(Load)事件:顯示最高級(jí)別的資源管理器。privatevoidfrmMain_Load(objectsender,EventArgse){iniTree();getSysIco();treeView1.ImageList=this.TreeImageList;}(8)treeView1的AfterExpand事件,在展開樹結(jié)點(diǎn)后發(fā)生的事件:privatevoidtreeView1_AfterExpand(objectsender,TreeViewEventArgse){if("我的電腦"!=e.Node.Text){iniDriectory(e.Node);}}(9)treeView1的AfterSelect事件,在選定樹結(jié)點(diǎn)后發(fā)生的事件:privatevoidtreeView1_AfterSelect(objectsender,TreeViewEventArgse){if("我的電腦"!=e.Node.Text){tspslblPath.Text="當(dāng)前路徑:"+e.Node.Tag.ToString();iniDriectory(e.Node);}}(10)工具按鈕tsbUp的Click事件,實(shí)現(xiàn)向上級(jí)目錄顯示:privatevoidtsbUp_Click(objectsender,EventArgse){TreeNodenode=treeView1.SelectedNode;TreeNodeParentNode

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論