C#文件浏览器制作的详细过程

GaryZhu 2009-09-04

C#的功能十分强大,用它可以轻松地做出属于自己的C#文件浏览器。下面简单地介绍一下C#文件浏览器的大致实现过程。其中涉及的有关这些控件的具体用法可参见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。

界面做好了,那么怎样才能在这个界面里显示文件夹和文件呢?这需要我们添加代码来实现。

C#文件浏览器之首先引用以下名字空间:

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);  



}  


} 

C#文件浏览器之创建目录树

其中,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);  


} 

相关推荐