网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C#应用
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.C#中屏蔽窗体关闭的消息 .
.C#使用WIN32API来遍历文件和目录.
.使用C#编写一个计时器.
.接触C#的服务器端正则表达式相关.
.C#的Windows编程中多语言的实现.
.获取cpu序列号,硬盘ID,网卡MAC地.
.C#中使用TextBox控件的两个问题.
.C#多线程-不同线程之间通过事件委.
.C#中为DataGrid添加下拉列表框.
.用C#截取指定长度的中英文混合字.
.C#减少图片文件大小和尺寸.
.C#关闭当前页面(借道JavaScript).
.C#中常用到的JS.
.C#消息队列应用程序 -1.
.C# 制作出任意不规则按钮! (原理.
..net中前台javascript与c#后台代.
.C#打造自己的文件浏览器.
.C#中使用DTS来导入数据及相关问题 .
.C#得到系统进程和结束某个指定的.
.c#的random shuffle.

C#打造自己的文件浏览器

发表日期:2003-12-30


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

}
 

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

上一篇:百万程序员的苦恼-选择VB.NET还是C# 人气:14052
下一篇:在C#中利用SharpZipLib进行文件的压缩和解压缩 人气:18883
浏览全部C#的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐