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。

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

  首先引用以下名字空间:

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

   至此,一个简单的文件浏览器就做成了,当然,它还很初级,甚至不能用它打开一个文件,加另外,它也不能显示文件和目录的图标,没有进行错误处理,没有进行安全控制……它能给你的只是一个思路



本文转自today4king博客园博客,原文链接:http://www.cnblogs.com/jinzhao/archive/2007/07/10/813084.html,如需转载请自行联系原作者

相关文章
|
3天前
|
C#
【C#】 如何实现文本框历史记录提示功能
【C#】 如何实现文本框历史记录提示功能
15 0
|
1月前
|
XML C# 数据格式
使用C#操作XML文件
使用C#操作XML文件
11 0
|
1月前
|
C#
C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录
C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录
23 0
|
3月前
|
监控 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
48 0
|
3月前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用ForceIP强制修改网口IP功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用ForceIP强制修改网口IP功能(C#)
26 0
|
3月前
|
安全 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用短曝光功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用短曝光功能(C#)
35 0
|
3月前
|
C#
C#读取html文件
C#读取html文件
29 3
|
3月前
|
编解码 监控 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C#)
19 0
|
3月前
|
存储 编解码 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用UserSet功能保存和载入相机的各类参数(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用UserSet功能保存和载入相机的各类参数(C#)
37 0
|
3月前
|
存储 数据管理 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机本身的数据保存(CustomData)功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机本身的数据保存(CustomData)功能(C#)
28 0