zoukankan      html  css  js  c++  java
  • 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);

    }
     

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

  • 相关阅读:
    Django 框架篇(四) : 视图(view)详解 及 路由系统(url)
    Django 框架篇(三) : Django之模板
    Django 框架篇(二) : 创建APP之视图函数; model(模型)系统操作数据库之ORM操作;
    Django 框架篇: 一. Django介绍; 二. 安装; 三. 创建项目;
    212
    redux:applyMiddleware源码解读
    react 反模式——不使用jsx动态显示异步组件
    angular 动态组件类型
    webpack2-webpack.config.js配置
    tdd:(react + mocha)环境配置
  • 原文地址:https://www.cnblogs.com/Godblessyou/p/1779016.html
Copyright © 2011-2022 走看看