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;

namespace myTree
{
 /// <summary>
 /// Form1 的摘要说明。
 /// </summary>
 public class Form1 : System.Windows.Forms.Form
 {
  private System.Windows.Forms.ImageList TreeImageList;
  private System.Windows.Forms.MainMenu mainMenu1;
  private System.Windows.Forms.MenuItem menuItem1;
  private System.Windows.Forms.ListView listView1;
  private System.Windows.Forms.TextBox textBox1;
  private System.Windows.Forms.TreeView treeView1;
  private System.Windows.Forms.Panel panel2;
  private System.Windows.Forms.Panel panel1;
  private System.Windows.Forms.Splitter splitter1;
  private System.Windows.Forms.Button button1;
  private System.Windows.Forms.ImageList LisrimageList;
  private System.Windows.Forms.ImageList LisrimageList2;
  private System.Windows.Forms.StatusBar statusBar1;
  private System.Windows.Forms.StatusBarPanel statusBarPanel1;
  private System.Windows.Forms.StatusBarPanel statusBarPanel2;
  private System.Windows.Forms.MenuItem menuItem2;
  private System.Windows.Forms.MenuItem menuItem3;
  private System.Windows.Forms.MenuItem menuItem4;
  private System.Windows.Forms.MenuItem menuItem5;
  private System.Windows.Forms.MenuItem menuItem6;
  private System.Windows.Forms.MenuItem menuItem7;
  private System.Windows.Forms.Label label1;
  private System.Windows.Forms.ToolBar toolBar1;
  private System.Windows.Forms.ToolBarButton back;
  private System.Windows.Forms.ImageList toolimglist;
  private System.Windows.Forms.ToolBarButton prve;
  private System.Windows.Forms.ToolBarButton up;
  private System.Windows.Forms.ToolBarButton toolBarButton1;
  private System.Windows.Forms.ToolBarButton find;
  private System.Windows.Forms.ToolBarButton wenjian;
  private System.Windows.Forms.ToolBarButton toolBarButton2;
  private System.Windows.Forms.ToolBarButton chakan;
  private System.Windows.Forms.MenuItem menuItem8;
  private System.Windows.Forms.MenuItem menuItem9;
  private System.ComponentModel.IContainer components;

  public Form1()
  {
   //
   // Windows 窗体设计器支持所必需的
   //
   InitializeComponent();

   
  }

  /// <summary>
  /// 清理所有正在使用的资源。
  /// </summary>
  protected override void Dispose( bool disposing )
  {
   if( disposing )
   {
    if (components != null)
    {
     components.Dispose();
    }
   }
   base.Dispose( disposing );
  }

  #region Windows Form Designer generated code
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {
   this.components = new System.ComponentModel.Container();
   this.TreeImageList = new System.Windows.Forms.ImageList(this.components);
   this.mainMenu1 = new System.Windows.Forms.MainMenu();
   this.menuItem1 = new System.Windows.Forms.MenuItem();
   this.menuItem2 = new System.Windows.Forms.MenuItem();
   this.menuItem3 = new System.Windows.Forms.MenuItem();
   this.menuItem4 = new System.Windows.Forms.MenuItem();
   this.menuItem5 = new System.Windows.Forms.MenuItem();
   this.menuItem6 = new System.Windows.Forms.MenuItem();
   this.menuItem7 = new System.Windows.Forms.MenuItem();
   this.listView1 = new System.Windows.Forms.ListView();
   this.textBox1 = new System.Windows.Forms.TextBox();
   this.treeView1 = new System.Windows.Forms.TreeView();
   this.panel2 = new System.Windows.Forms.Panel();
   this.label1 = new System.Windows.Forms.Label();
   this.button1 = new System.Windows.Forms.Button();
   this.panel1 = new System.Windows.Forms.Panel();
   this.splitter1 = new System.Windows.Forms.Splitter();
   this.LisrimageList = new System.Windows.Forms.ImageList(this.components);
   this.LisrimageList2 = new System.Windows.Forms.ImageList(this.components);
   this.statusBar1 = new System.Windows.Forms.StatusBar();
   this.statusBarPanel1 = new System.Windows.Forms.StatusBarPanel();
   this.statusBarPanel2 = new System.Windows.Forms.StatusBarPanel();
   this.toolBar1 = new System.Windows.Forms.ToolBar();
   this.back = new System.Windows.Forms.ToolBarButton();
   this.prve = new System.Windows.Forms.ToolBarButton();
   this.up = new System.Windows.Forms.ToolBarButton();
   this.toolBarButton1 = new System.Windows.Forms.ToolBarButton();
   this.find = new System.Windows.Forms.ToolBarButton();
   this.wenjian = new System.Windows.Forms.ToolBarButton();
   this.toolBarButton2 = new System.Windows.Forms.ToolBarButton();
   this.chakan = new System.Windows.Forms.ToolBarButton();
   this.toolimglist = new System.Windows.Forms.ImageList(this.components);
   this.menuItem8 = new System.Windows.Forms.MenuItem();
   this.menuItem9 = new System.Windows.Forms.MenuItem();
   this.panel2.SuspendLayout();
   this.panel1.SuspendLayout();
   ((System.ComponentModel.ISupportInitialize)(this.statusBarPanel1)).BeginInit();
   ((System.ComponentModel.ISupportInitialize)(this.statusBarPanel2)).BeginInit();
   this.SuspendLayout();
   //
   // TreeImageList
   //
   this.TreeImageList.ImageSize = new System.Drawing.Size(16, 16);
   this.TreeImageList.TransparentColor = System.Drawing.Color.Transparent;
   //
   // mainMenu1
   //
   this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
                       this.menuItem1,
                       this.menuItem2,
                       this.menuItem3,
                       this.menuItem4});
   //
   // menuItem1
   //
   this.menuItem1.Index = 0;
   this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
                       this.menuItem8,
                       this.menuItem9});
   this.menuItem1.Text = "文件";
   this.menuItem1.Click += new System.EventHandler(this.menuItem1_Click);
   //
   // menuItem2
   //
   this.menuItem2.Index = 1;
   this.menuItem2.Text = "编辑";
   //
   // menuItem3
   //
   this.menuItem3.Index = 2;
   this.menuItem3.Text = "显隐";
   this.menuItem3.Click += new System.EventHandler(this.menuItem3_Click);
   //
   // menuItem4
   //
   this.menuItem4.Index = 3;
   this.menuItem4.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
                       this.menuItem5,
                       this.menuItem6,
                       this.menuItem7});
   this.menuItem4.Text = "列表方式";
   //
   // menuItem5
   //
   this.menuItem5.Index = 0;
   this.menuItem5.Text = "大图标";
   this.menuItem5.Click += new System.EventHandler(this.menuItem5_Click);
   //
   // menuItem6
   //
   this.menuItem6.Index = 1;
   this.menuItem6.Text = "小图标";
   this.menuItem6.Click += new System.EventHandler(this.menuItem6_Click);
   //
   // menuItem7
   //
   this.menuItem7.Index = 2;
   this.menuItem7.Text = "详细列表";
   this.menuItem7.Click += new System.EventHandler(this.menuItem7_Click);
   //
   // listView1
   //
   this.listView1.Dock = System.Windows.Forms.DockStyle.Fill;
   this.listView1.Location = new System.Drawing.Point(166, 62);
   this.listView1.Name = "listView1";
   this.listView1.Size = new System.Drawing.Size(368, 253);
   this.listView1.TabIndex = 3;
   this.listView1.View = System.Windows.Forms.View.SmallIcon;
   this.listView1.ItemActivate += new System.EventHandler(this.listView1_ItemActivate);
   this.listView1.SelectedIndexChanged += new System.EventHandler(this.listView1_SelectedIndexChanged);
   //
   // textBox1
   //
   this.textBox1.Dock = System.Windows.Forms.DockStyle.Top;
   this.textBox1.Location = new System.Drawing.Point(0, 41);
   this.textBox1.Name = "textBox1";
   this.textBox1.Size = new System.Drawing.Size(534, 21);
   this.textBox1.TabIndex = 5;
   this.textBox1.Text = "";
   //
   // treeView1
   //
   this.treeView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
    | System.Windows.Forms.AnchorStyles.Left)
    | System.Windows.Forms.AnchorStyles.Right)));
   this.treeView1.ImageIndex = -1;
   this.treeView1.ItemHeight = 18;
   this.treeView1.Location = new System.Drawing.Point(0, 23);
   this.treeView1.Name = "treeView1";
   this.treeView1.SelectedImageIndex = -1;
   this.treeView1.Size = new System.Drawing.Size(162, 227);
   this.treeView1.TabIndex = 1;
   this.treeView1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect_1);
   this.treeView1.BeforeExpand += new System.Windows.Forms.TreeViewCancelEventHandler(this.treeView1_BeforeExpand_1);
   //
   // panel2
   //
   this.panel2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
   this.panel2.Controls.Add(this.label1);
   this.panel2.Controls.Add(this.button1);
   this.panel2.Dock = System.Windows.Forms.DockStyle.Top;
   this.panel2.Location = new System.Drawing.Point(0, 0);
   this.panel2.Name = "panel2";
   this.panel2.Size = new System.Drawing.Size(162, 22);
   this.panel2.TabIndex = 0;
   //
   // label1
   //
   this.label1.Dock = System.Windows.Forms.DockStyle.Left;
   this.label1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(134)));
   this.label1.Location = new System.Drawing.Point(0, 0);
   this.label1.Name = "label1";
   this.label1.Size = new System.Drawing.Size(42, 18);
   this.label1.TabIndex = 1;
   this.label1.Text = "文件夹";
   this.label1.TextAlign = System.Drawing.ContentAlignment.BottomLeft;
   //
   // button1
   //
   this.button1.Dock = System.Windows.Forms.DockStyle.Right;
   this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
   this.button1.Location = new System.Drawing.Point(140, 0);
   this.button1.Name = "button1";
   this.button1.Size = new System.Drawing.Size(18, 18);
   this.button1.TabIndex = 0;
   this.button1.Text = "X";
   this.button1.Click += new System.EventHandler(this.button1_Click);
   //
   // panel1
   //
   this.panel1.Controls.Add(this.treeView1);
   this.panel1.Controls.Add(this.panel2);
   this.panel1.Dock = System.Windows.Forms.DockStyle.Left;
   this.panel1.Location = new System.Drawing.Point(0, 62);
   this.panel1.Name = "panel1";
   this.panel1.Size = new System.Drawing.Size(162, 253);
   this.panel1.TabIndex = 6;
   //
   // splitter1
   //
   this.splitter1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
   this.splitter1.Location = new System.Drawing.Point(162, 62);
   this.splitter1.Name = "splitter1";
   this.splitter1.Size = new System.Drawing.Size(4, 253);
   this.splitter1.TabIndex = 7;
   this.splitter1.TabStop = false;
   //
   // LisrimageList
   //
   this.LisrimageList.ImageSize = new System.Drawing.Size(16, 16);
   this.LisrimageList.TransparentColor = System.Drawing.Color.Transparent;
   //
   // LisrimageList2
   //
   this.LisrimageList2.ImageSize = new System.Drawing.Size(16, 16);
   this.LisrimageList2.TransparentColor = System.Drawing.Color.Transparent;
   //
   // statusBar1
   //
   this.statusBar1.Location = new System.Drawing.Point(0, 315);
   this.statusBar1.Name = "statusBar1";
   this.statusBar1.Panels.AddRange(new System.Windows.Forms.StatusBarPanel[] {
                        this.statusBarPanel1,
                        this.statusBarPanel2});
   this.statusBar1.Size = new System.Drawing.Size(534, 17);
   this.statusBar1.TabIndex = 8;
   //
   // statusBarPanel1
   //
   this.statusBarPanel1.BorderStyle = System.Windows.Forms.StatusBarPanelBorderStyle.None;
   this.statusBarPanel1.Text = "statusBarPanel1";
   this.statusBarPanel1.Width = 132;
   //
   // statusBarPanel2
   //
   this.statusBarPanel2.BorderStyle = System.Windows.Forms.StatusBarPanelBorderStyle.None;
   this.statusBarPanel2.Text = "statusBarPanel2";
   this.statusBarPanel2.Width = 132;
   //
   // toolBar1
   //
   this.toolBar1.Appearance = System.Windows.Forms.ToolBarAppearance.Flat;
   this.toolBar1.Buttons.AddRange(new System.Windows.Forms.ToolBarButton[] {
                      this.back,
                      this.prve,
                      this.up,
                      this.toolBarButton1,
                      this.find,
                      this.wenjian,
                      this.toolBarButton2,
                      this.chakan});
   this.toolBar1.DropDownArrows = true;
   this.toolBar1.ImageList = this.LisrimageList;
   this.toolBar1.Location = new System.Drawing.Point(0, 0);
   this.toolBar1.Name = "toolBar1";
   this.toolBar1.ShowToolTips = true;
   this.toolBar1.Size = new System.Drawing.Size(534, 41);
   this.toolBar1.TabIndex = 9;
   this.toolBar1.ButtonClick += new System.Windows.Forms.ToolBarButtonClickEventHandler(this.toolBar1_ButtonClick);
   //
   // back
   //
   this.back.Style = System.Windows.Forms.ToolBarButtonStyle.ToggleButton;
   this.back.Text = "后退";
   //
   // prve
   //
   this.prve.Text = "前进";
   //
   // up
   //
   this.up.Text = "向上";
   //
   // toolBarButton1
   //
   this.toolBarButton1.Style = System.Windows.Forms.ToolBarButtonStyle.Separator;
   //
   // find
   //
   this.find.Text = "查找";
   //
   // wenjian
   //
   this.wenjian.Text = "文件夹";
   //
   // toolBarButton2
   //
   this.toolBarButton2.Style = System.Windows.Forms.ToolBarButtonStyle.Separator;
   //
   // chakan
   //
   this.chakan.Text = "查看";
   //
   // toolimglist
   //
   this.toolimglist.ImageSize = new System.Drawing.Size(16, 16);
   this.toolimglist.TransparentColor = System.Drawing.Color.Transparent;
   //
   // menuItem8
   //
   this.menuItem8.Index = 0;
   this.menuItem8.Text = "打开(&O)";
   this.menuItem8.Click += new System.EventHandler(this.menuItem8_Click);
   //
   // menuItem9
   //
   this.menuItem9.Index = 1;
   this.menuItem9.Text = "退出(&X)";
   this.menuItem9.Click += new System.EventHandler(this.menuItem9_Click);
   //
   // Form1
   //
   this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
   this.ClientSize = new System.Drawing.Size(534, 332);
   this.Controls.Add(this.listView1);
   this.Controls.Add(this.splitter1);
   this.Controls.Add(this.panel1);
   this.Controls.Add(this.textBox1);
   this.Controls.Add(this.statusBar1);
   this.Controls.Add(this.toolBar1);
   this.Menu = this.mainMenu1;
   this.Name = "Form1";
   this.Text = "资源管理器";
   this.Load += new System.EventHandler(this.Form1_Load);
   this.panel2.ResumeLayout(false);
   this.panel1.ResumeLayout(false);
   ((System.ComponentModel.ISupportInitialize)(this.statusBarPanel1)).EndInit();
   ((System.ComponentModel.ISupportInitialize)(this.statusBarPanel2)).EndInit();
   this.ResumeLayout(false);

  }
  #endregion

  /// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  [STAThread]
  static void Main()
  {
   Application.Run(new Form1());
  }

  //*************************************************************************************
  [DllImport("Shell32.dll")]
  public static extern int ExtractIcon(IntPtr h,string strx,int ii);

  [DllImport("Shell32.dll")]
  public static extern int SHGetFileInfo(string pszPath,uint dwFileAttributes,ref SHFILEINFO psfi,uint cbFileInfo, uint uFlags);
  //Private   Declare   Function   GetDriveType   Lib   "kernel32"   Alias   "GetDriveTypeA"   (ByVal   nDrive   As   String)   As   Long    
  //public static extern string GetDriveType(string pf);
  [DllImport("KERNEL32.dll")]
  public static extern int GetDriveType(string pf);
  public struct SHFILEINFO
  {
   public IntPtr hIcon; 
   public int   iIcon; 
   public uint dwAttributes;
   public char szDisplayName;
   public char szTypeName;
  }
 

  string strFilePath="";
  //*************************************************************************************
 
  protected virtual Icon myExtractIcon(string FileName,int iIndex)
  {
   try
   {
    IntPtr hIcon=(IntPtr)ExtractIcon(this.Handle,FileName,iIndex);
    if(! hIcon.Equals(null))
    {
     Icon icon=Icon.FromHandle(hIcon);
     return icon;
    }
   }
   catch(Exception ex)
   { MessageBox.Show(ex.Message,"错误提示",0,MessageBoxIcon.Error);}
   return null;
  }
  //*************************************************************************************

  protected virtual void SetIcon(ImageList imageList,string FileName,bool tf)
  {
   SHFILEINFO fi=new SHFILEINFO();
   if(tf==true)
   {
    int iTotal=(int)SHGetFileInfo(FileName,0,ref fi,100,  16640);//SHGFI_ICON|SHGFI_SMALLICON
    try
    {
     if(iTotal >0)
     {
      Icon ic=Icon.FromHandle(fi.hIcon);
      imageList.Images.Add(ic);
      //return ic;
     }
    }
    catch(Exception ex)
    { MessageBox.Show(ex.Message,"错误提示",0,MessageBoxIcon.Error);}
   }
   else
   {
    int iTotal=(int)SHGetFileInfo(FileName,0,ref fi,100,  257);
    try
    {
     if(iTotal >0)
     {
      Icon ic=Icon.FromHandle(fi.hIcon);
      imageList.Images.Add(ic);
      //return ic;
     }
    }
    catch(Exception ex)
    { MessageBox.Show(ex.Message,"错误提示",0,MessageBoxIcon.Error);}
   }
   // return null;
  }
  //*************************************************************************************

  public void GetDrive()
  {
   treeView1.ImageList=TreeImageList;
 
   treeView1.BeginUpdate();
   treeView1.Nodes.Clear();

   TreeNode RootNode=new TreeNode("我的电脑",0,0);
   treeView1.Nodes.Add(RootNode);
 
   int iImageIndex=2;  int iSelectedIndex=2;
   string[] astrDrives = Directory.GetLogicalDrives();
   foreach (string str in astrDrives)
   {
    /*
    if(str == "A://")
    { iImageIndex=1;  iSelectedIndex=1;}
    else if(str == "G://")
    { iImageIndex=3;  iSelectedIndex=3;}
    else
    { iImageIndex=2;  iSelectedIndex=2;}

    TreeNode tnDrive = new TreeNode(str, iImageIndex,iSelectedIndex);
    treeView1.Nodes[0].Nodes.Add(tnDrive);
    AddDirectories(tnDrive);
    //我的电脑 0
   TreeImageList.Images.Add(ic0);
   Icon ic1=myExtractIcon("%SystemRoot%//system32//shell32.dll",5);//软盘 1
   TreeImageList.Images.Add(ic1);
   Icon ic1=myExtractIcon("%SystemRoot%//system32//shell32.dll",8);//硬盘 2
   TreeImageList.Images.Add(ic1);
   Icon ic2=myExtractIcon("%SystemRoot%//system32//shell32.dll",7);//可移动盘 3
   TreeImageList.Images.Add(ic2);
   Icon ic3=myExtractIcon("%SystemRoot%//system32//shell32.dll",11);//光盘 4
   TreeImageList.Images.Add(ic3);

   Icon ic4=myExtractIcon("%SystemRoot%//system32//shell32.dll",3);//文件夹 5
   TreeImageList.Images.Add(ic4);
   Icon ic5=myExtractIcon("%SystemRoot%//system32//shell32.dll",4);//文件夹 6
   TreeImageList.Images.Add(ic5);
   Icon ic6=myExtractIcon("%SystemRoot%//system32//shell32.dll",101);//回收站 7
    */
    if(str == "A://")
    { iImageIndex=1;  iSelectedIndex=1;}
    string jg=GetDriveType(str).ToString ();
    if(jg.Trim ()=="3")
    {
      iImageIndex=7;  iSelectedIndex=7;
    }
    else if(jg.Trim ()=="5")
    {
      iImageIndex=3;  iSelectedIndex=3;
    }
    else if(jg.Trim ()=="2")
    {
     iImageIndex=2;  iSelectedIndex=2;
    }
    
    TreeNode tnDrive = new TreeNode(str, iImageIndex,iSelectedIndex);
    treeView1.Nodes[0].Nodes.Add(tnDrive);
    AddDirectories(tnDrive);
    if(str == "C://")
    { treeView1.SelectedNode=tnDrive;}
   }
   treeView1.EndUpdate();
  }
  //*************************************************************************************

  void AddDirectories(TreeNode tn)
  {
   tn.Nodes.Clear();

   string strPath=tn.FullPath;
   strPath=strPath.Remove(0,5);

   //获得当前目录
   DirectoryInfo   dirinfo = new DirectoryInfo(strPath);
   DirectoryInfo[] adirinfo;
   try
   {
    adirinfo = dirinfo.GetDirectories();
   }
   catch
   { return;}

   int iImageIndex=4;  int iSelectedIndex=5;
   foreach (DirectoryInfo di in adirinfo)
   {
    if(di.Name=="RECYCLER"||di.Name=="RECYCLED"||di.Name=="Recycled")
    {iImageIndex=6;  iSelectedIndex=6;}
    else
    {iImageIndex=4;  iSelectedIndex=5;}

    TreeNode tnDir = new TreeNode(di.Name, iImageIndex, iSelectedIndex);
    tn.Nodes.Add(tnDir);
   }


   
  }
  //*************************************************************************************
  //在大图标、小图标、详细列表切换时调用
  protected virtual void ListViewAB(int iii)
  {
   if(iii==1)
   {
    LisrimageList2.ImageSize=new Size(32,32);
    listView1.LargeImageList=LisrimageList2;
  
    if(listView1.View==View.Details||listView1.View==View.SmallIcon)
    {listView1.View=View.LargeIcon;}
   }
   else if(iii==2)
   {
    if(listView1.View==View.Details||listView1.View==View.LargeIcon)
    {listView1.View=View.SmallIcon;}
   }
   else
   {
    if(listView1.View==View.LargeIcon||listView1.View==View.SmallIcon)
    {listView1.View=View.Details;}
   }
  }
  //*************************************************************************************
  private void treeView1_BeforeExpand_1(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
  {
   //base.OnBeforeExpand(e);

   treeView1.BeginUpdate();

   foreach (TreeNode tn in e.Node.Nodes)
   { AddDirectories(tn);}

   treeView1.EndUpdate();
  }

  //*************************************************************************************

  protected virtual void InitList(TreeNode tn)
  {
   this.statusBarPanel1.Text="正在刷新文件夹,请稍等.....";
   this.Cursor=Cursors.WaitCursor;

   this.LisrimageList2.Images.Clear();
   this.LisrimageList.Images.Clear();
   listView1.SmallImageList=LisrimageList;
   Icon ic0=myExtractIcon("%SystemRoot%//system32//shell32.dll",3);
   LisrimageList.Images.Add(ic0);
   LisrimageList2.Images.Add(ic0);

   listView1.Clear();
   //设置列表框的表头
   listView1.Columns.Add("文件名",160,HorizontalAlignment.Left);
   listView1.Columns.Add("文件大小",120,HorizontalAlignment.Left);
   listView1.Columns.Add("创建时间",120,HorizontalAlignment.Left);
   listView1.Columns.Add("访问时间",200,HorizontalAlignment.Left);

 
   string strPath=tn.FullPath;
   strPath=strPath.Remove(0,5);
   //获得当前目录下的所有文件
   DirectoryInfo curDir=new DirectoryInfo(strPath);//创建目录对象。
   

 

   //以下是向列表框中插入目录,不是文件。获得当前目录下的各个子目录。
   int iItem=0;

   DirectoryInfo Dir=new DirectoryInfo(strPath);
   foreach(DirectoryInfo di in Dir.GetDirectories())
   {  
    ListViewItem LiItem=new ListViewItem(di.Name,0);
    listView1.Items.Insert(iItem,LiItem);
    iItem++;
   }
   FileInfo[] dirFiles;
   try
   {
    dirFiles=curDir.GetFiles();
   }
   catch  { return;}

   string []arrSubItem=new string[4];
   //文件的创建时间和访问时间。
   int iCount=0;    int iconIndex=1;//用1,而不用0是要让过0号图标。
   foreach(FileInfo fileInfo in dirFiles)
   {
    string strFileName=fileInfo.Name;          
           
    //如果不是文件pagefile.sys
    if(! strFileName.Equals("pagefile.sys"))
    {
     arrSubItem[0]=strFileName;
     arrSubItem[1]=fileInfo.Length+" 字节";
     arrSubItem[2]=fileInfo.CreationTime.ToString();
     arrSubItem[3]=fileInfo.LastAccessTime.ToString();
    }
    else
    { arrSubItem[1]="未知大小"; arrSubItem[2]="未知日期"; arrSubItem[3]="未知日期";}
  

    //得到每个文件的图标
    string str=fileInfo.FullName;
    try
    {
     SetIcon(LisrimageList,str,false);
     SetIcon(LisrimageList2,str,true);
    }
    catch(Exception ex)
    { MessageBox.Show(ex.Message,"错误提示",0,MessageBoxIcon.Error);}
       

    //插入列表项   
    ListViewItem LiItem=new ListViewItem(arrSubItem,iconIndex);
    listView1.Items.Insert(iCount,LiItem);

    iCount++;
    iconIndex++;
   }
   strFilePath=strPath;
   textBox1.Text=strPath;
   this.statusBarPanel1.Text=strPath;
   this.statusBarPanel2.Text="文件数量: " + iCount.ToString()+"个";
   this.Cursor=Cursors.Arrow;

  }
  //*************************************************************************************

  protected virtual void InitList2(string strName)
  {
   this.statusBarPanel1.Text="正在刷新文件夹,请稍等.....";
   this.Cursor=Cursors.WaitCursor;

   this.LisrimageList2.Images.Clear();
   this.LisrimageList.Images.Clear();
   listView1.SmallImageList=LisrimageList;
   Icon ic0=myExtractIcon("%SystemRoot%//system32//shell32.dll",3);
   LisrimageList.Images.Add(ic0);
   LisrimageList2.Images.Add(ic0);

   listView1.Clear();
   //设置列表框的表头
   listView1.Columns.Add("文件名",160,HorizontalAlignment.Left);
   listView1.Columns.Add("文件大小",120,HorizontalAlignment.Left);
   listView1.Columns.Add("创建时间",120,HorizontalAlignment.Left);
   listView1.Columns.Add("访问时间",200,HorizontalAlignment.Left);

 
   
 

   //以下是向列表框中插入目录,不是文件。获得当前目录下的各个子目录。
   int iItem=0;//调用listView1.Items.Insert(iItem,LiItem);时用。不能使用iconIndex。

   DirectoryInfo Dir=new DirectoryInfo(strName);//创建目录对象。
   foreach(DirectoryInfo di in Dir.GetDirectories())
   {  
    ListViewItem LiItem=new ListViewItem(di.Name,0);
    listView1.Items.Insert(iItem,LiItem);
    iItem++;
   }
   //获得当前目录下的所有文件
   DirectoryInfo curDir=new DirectoryInfo(strName);//创建目录对象。
   FileInfo[] dirFiles;
   try
   {
    dirFiles=curDir.GetFiles();
   }
   catch  { return;}

   string []arrSubItem=new string[4];
   //文件的创建时间和访问时间。
   int iCount=0;    int iconIndex=1;//用1,而不用0是要让过0号图标。
   foreach(FileInfo fileInfo in dirFiles)
   {
    string strFileName=fileInfo.Name;          
           
    //如果不是文件pagefile.sys
    if(! strFileName.Equals("pagefile.sys"))
    {
     arrSubItem[0]=strFileName;
     arrSubItem[1]=fileInfo.Length+" 字节";
     arrSubItem[2]=fileInfo.CreationTime.ToString();
     arrSubItem[3]=fileInfo.LastAccessTime.ToString();
    }
    else
    { arrSubItem[1]="未知大小"; arrSubItem[2]="未知日期"; arrSubItem[3]="未知日期";}
  

    //得到每个文件的图标
    string str=fileInfo.FullName;
    try
    {
     SetIcon(LisrimageList,str,false);
     SetIcon(LisrimageList2,str,true);
    }
    catch(Exception ex)
    { MessageBox.Show(ex.Message,"错误提示",0,MessageBoxIcon.Error);}
       

    //插入列表项   
    ListViewItem LiItem=new ListViewItem(arrSubItem,iconIndex);
    listView1.Items.Insert(iCount,LiItem);

    iCount++;
    iconIndex++;//必须加在listView1.Items.Insert(iCount,LiItem);
   }
   strFilePath=strName;//把路径赋值于全局变量strFilePath

   textBox1.Text=strName;
   this.statusBarPanel2.Text="文件数量: " + iCount.ToString()+"个";
   this.Cursor=Cursors.Arrow;


  }
  

  private void treeView1_AfterSelect_1(object sender, System.Windows.Forms.TreeViewEventArgs e)
  {
   if(e.Node.Text=="我的电脑")   
   { return;}

   InitList(e.Node);
  }
 
  private void button1_Click(object sender, System.EventArgs e)
  {
   this.panel1.Hide();
  }
 

  private void listView1_ItemActivate(object sender, System.EventArgs e)
  {
   string str=Path.Combine(strFilePath,listView1.FocusedItem.Text);
   try
   {
    if(listView1.FocusedItem.SubItems.Count>1)
    { System.Diagnostics.Process.Start(str); }
    else
    { InitList2(str); }
   }
   catch  { return;}
  }
 
  private void menuItem3_Click(object sender, System.EventArgs e)
  {
   this.panel1.Visible=! panel1.Visible;
  }
  
  private void menuItem5_Click(object sender, System.EventArgs e)
  {
   ListViewAB(1);
  }
  
  private void menuItem6_Click(object sender, System.EventArgs e)
  {
   ListViewAB(2);
  }
  
  private void menuItem7_Click(object sender, System.EventArgs e)
  {
   ListViewAB(3);
  }

  private void Form1_Load(object sender, System.EventArgs e)
  {
   Icon ic0=myExtractIcon("%SystemRoot%//system32//shell32.dll",15);//我的电脑 0
   TreeImageList.Images.Add(ic0);
   Icon ic1=myExtractIcon("%SystemRoot%//system32//shell32.dll",5);//软盘 1
   TreeImageList.Images.Add(ic1);
   Icon ic2=myExtractIcon("%SystemRoot%//system32//shell32.dll",7);//可移动盘 2
   TreeImageList.Images.Add(ic2);
   Icon ic3=myExtractIcon("%SystemRoot%//system32//shell32.dll",11);//光盘 3
   TreeImageList.Images.Add(ic3);

   Icon ic4=myExtractIcon("%SystemRoot%//system32//shell32.dll",3);//文件夹 4
   TreeImageList.Images.Add(ic4);
   Icon ic5=myExtractIcon("%SystemRoot%//system32//shell32.dll",4);//文件夹 5
   TreeImageList.Images.Add(ic5);
   Icon ic6=myExtractIcon("%SystemRoot%//system32//shell32.dll",101);//回收站 6
   TreeImageList.Images.Add(ic6);
   ic1=myExtractIcon("%SystemRoot%//system32//shell32.dll",8);//硬盘 7
   TreeImageList.Images.Add(ic1);


   GetDrive();
   
  }

  private void menuItem1_Click(object sender, System.EventArgs e)
  {
  
  }

  private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
  {
  
  }

  private void menuItem9_Click(object sender, System.EventArgs e)
  {
   Application.Exit ();
  }

  private void listView1_SelectedIndexChanged(object sender, System.EventArgs e)
  {
  
  }

  private void menuItem8_Click(object sender, System.EventArgs e)
  {
   string str=Path.Combine(strFilePath,listView1.FocusedItem.Text);
   try
   {
    if(listView1.FocusedItem.SubItems.Count>1)
    { System.Diagnostics.Process.Start(str); }
    else
    { InitList2(str); }
   }
   catch  { return;}
  }
  

 }

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值