C#的功能十分強大,用它可以輕松地做出屬於自己的文件浏覽器。下面簡單地介紹一下文件浏覽器的大致實現過程。其中涉及的有關這些控件的具體用法可參見C#的聯機幫助。
你需要用到幾個控件:
TreeView(用於顯示顯示目錄樹);
ListView(用於顯示文件和目錄列表);
Splitter(用於允許用戶調整TreeView和ListView的大小);
其它的如:MainMenu,ToolBar,StatusBar,ImageList等等就看你的實際需要了。
首先,新建一個C#項目(Windows應用程序),命名為MyFileView,將窗口命名為mainForm,調整主窗口大小(Size)。添加MainMenu,ToolBar,StatusBar,ImageList等控件。
然後,添加TreeView控件,命名為treeView,Dock屬性設為Left,再添加Splitter控件,同樣將Dock屬性設為Left。最後添加ListView控件,命名為listView,Dock屬性設為Fill。如下圖所示。
界面做好了,那麼怎樣才能在這個界面裡顯示文件夾和文件呢?這需要我們添加代碼來實現。
首先引用以下名字空間:
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.IO ; using System .Runtime .InteropServices ; 在mainForm_Load事件中添加以下代碼,用於在treeView控件中顯示目錄樹: private void mainForm_Load(object sender, System.EventArgs e) //獲取邏輯驅動器 string[] LogicDrives=System.IO .Directory .GetLogicalDrives(); TreeNode[] cRoot =new TreeNode[LogicDrives.Length]; for (int i=0;i< LogicDrives.Length ;i++) { TreeNode drivesNode=new TreeNode(LogicDrives[i]); treeView.Nodes .Add (drivesNode); if (LogicDrives[i]!="A:\\" && LogicDrives[i]!="B:\\" ) getSubNode(drivesNode,true); } }
其中,getSubNode為一方法,用於獲取子目錄,以創建目錄樹節點,參數:PathName為獲取的子目錄在此節點下創建子節點,參數isEnd:結束標志,true則結束。
private void getSubNode(TreeNode PathName,bool isEnd) { if(!isEnd) return; //exit this TreeNode curNode; DirectoryInfo[] subDir; DirectoryInfo curDir=new DirectoryInfo (PathName.FullPath); try { subDir=curDir.GetDirectories(); } catch{} foreach(DirectoryInfo d in subDir) { curNode=new TreeNode(d.Name); PathName.Nodes .Add (curNode); getSubNode(curNode,false); } }
當鼠標單擊目錄節點左邊的+號時,節點將展開,此時,應在AfterExpand事件中加入以下代碼,以獲取此目錄下的子目錄節點:
private void treeView_AfterExpand(object sender, System.Windows.Forms.TreeViewEventArgs e) { try { foreach(TreeNode tn in e.Node .Nodes ) { if (!tn.IsExpanded) getSubNode(tn,true); } } catch{;} }
當鼠標單擊選中目錄節點時,右邊的listView控件應顯示此目錄下的文件和目錄,代碼如下:
private void treeView_AfterSelect(object sender,System.Windows.Forms.TreeViewEventArgs e) { listView.Items.Clear(); DirectoryInfo selDir=new DirectoryInfo(e.Node.FullPath ); DirectoryInfo[] listDir; FileInfo[] listFile; try { listDir=selDir.GetDirectories(); listFile=selDir.GetFiles(); } catch{} foreach (DirectoryInfo d in listDir) listView.Items .Add (d.Name,6); foreach (FileInfo d in listFile) listView.Items .Add (d.Name); }
至此,一個簡單的文件浏覽器就做成了,當然,它還很初級,甚至不能用它打開一個文件,加另外,它也不能顯示文件和目錄的圖標,沒有進行錯誤處理,沒有進行安全控制……它能給你的只是一個思路。