用TreeView控件实现资源管理器(显示本地硬盘下所有文件夹和文件,并可以浏览图片)(示例代码下载)

    技术2022-05-11  15

    (一).说明

            用TreeView控件实现资源管理器,显示本地硬盘下所有文件夹和文件,并可以浏览图片

    (二).图片示例

    (三).代码

    using System;using System.Drawing;using System.Collections;using System.ComponentModel;using System.Windows.Forms;using System.Data;using System.IO;

    namespace 图像格式转II{ ///

     /// Form1 的摘要说明。 ///  public class FormMain : System.Windows.Forms.Form  {   private System.Windows.Forms.TreeView treeViewDir;   private System.Windows.Forms.Splitter splitter1;   private System.Windows.Forms.Panel panel1;   private System.Windows.Forms.PictureBox pictureBox;   ///   /// 必需的设计器变量。  ///   private System.ComponentModel.Container components = null;

      private Bitmap bitmap;  //public  void Bitmap(string filename,bool useIcm);//**********  public FormMain()  {   //   // Windows 窗体设计器支持所必需的   //   InitializeComponent();   //   // TODO: 在 InitializeComponent 调用后添加任何构造函数代码   //   pictureBox.Top=treeViewDir.Top;   pictureBox.Left=treeViewDir.Left;   pictureBox.Width=panel1.Width;   pictureBox.Height=panel1.Height;   bitmap=null;   FillDirTree();    }

      ///

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

      #region Windows Form Designer generated code  ///

      /// 设计器支持所需的方法 - 不要使用代码编辑器修改  /// 此方法的内容。  ///   private void InitializeComponent()   {    this.treeViewDir = new System.Windows.Forms.TreeView();    this.splitter1 = new System.Windows.Forms.Splitter();    this.panel1 = new System.Windows.Forms.Panel();    this.pictureBox = new System.Windows.Forms.PictureBox();    this.panel1.SuspendLayout();    this.SuspendLayout();    //    // treeViewDir    //    this.treeViewDir.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(0)), ((System.Byte)(192)), ((System.Byte)(192)));    this.treeViewDir.Dock = System.Windows.Forms.DockStyle.Left;    this.treeViewDir.ImageIndex = -1;    this.treeViewDir.Location = new System.Drawing.Point(0, 0);    this.treeViewDir.Name = "treeViewDir";    this.treeViewDir.SelectedImageIndex = -1;    this.treeViewDir.Size = new System.Drawing.Size(136, 373);    this.treeViewDir.TabIndex = 0;    this.treeViewDir.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeViewDir_AfterSelect);    this.treeViewDir.BeforeExpand += new System.Windows.Forms.TreeViewCancelEventHandler(this.treeViewDir_BeforeExpand);    //    // splitter1    //    this.splitter1.Location = new System.Drawing.Point(136, 0);    this.splitter1.Name = "splitter1";    this.splitter1.Size = new System.Drawing.Size(8, 373);    this.splitter1.TabIndex = 1;    this.splitter1.TabStop = false;    //    // panel1    //    this.panel1.Controls.Add(this.pictureBox);    this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;    this.panel1.Location = new System.Drawing.Point(144, 0);    this.panel1.Name = "panel1";    this.panel1.Size = new System.Drawing.Size(360, 373);    this.panel1.TabIndex = 2;    this.panel1.Resize += new System.EventHandler(this.panel1_Resize);    //    // pictureBox    //    this.pictureBox.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(192)), ((System.Byte)(192)), ((System.Byte)(255)));    this.pictureBox.Dock = System.Windows.Forms.DockStyle.Fill;    this.pictureBox.Location = new System.Drawing.Point(0, 0);    this.pictureBox.Name = "pictureBox";    this.pictureBox.Size = new System.Drawing.Size(360, 373);    this.pictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;    this.pictureBox.TabIndex = 0;    this.pictureBox.TabStop = false;    //    // FormMain    //    this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);    this.ClientSize = new System.Drawing.Size(504, 373);    this.Controls.Add(this.panel1);    this.Controls.Add(this.splitter1);    this.Controls.Add(this.treeViewDir);    this.Name = "FormMain";    this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;    this.Text = "图像浏览";    this.panel1.ResumeLayout(false);    this.ResumeLayout(false);

      }  #endregion

      private void FillDirTree()  {   string[] drivers=Environment.GetLogicalDrives();   for(int i=0;i    {     Console.WriteLine("i={0}",i);     if(PlatformInvokeKernel32.GetDriveType(drivers[i])==PlatformInvokeKernel32.DRIVE_FIXED)     {      DirNode root=new DirNode(drivers[i]);      treeViewDir.Nodes.Add(root);      AddDirs(root);     }    }   }   private void AddDirs(TreeNode node)   {    try    {     DirectoryInfo dir=new DirectoryInfo(GetPathFromNode(node));     DirectoryInfo[] e=dir.GetDirectories();     FileInfo[] f=dir.GetFiles();     string name;     for(int i=0;i     {      name=e[i].Name;      if(!name.Equals(".")&&!name.Equals(".."))      {       node.Nodes.Add(new DirNode(name));      }     }     for(int i=0;i     {      name=f[i].Name;      node.Nodes.Add(new DirNode(name));     }    }    catch    {    }   }   private string GetPathFromNode(TreeNode node)   {    if(node.Parent==null)    {     return node.Text;    }    return Path.Combine(GetPathFromNode(node.Parent),node.Text);   }   ///

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

      private void panel1_Resize(object sender, System.EventArgs e)  {   pictureBox.Top=treeViewDir.Top;   pictureBox.Left=treeViewDir.Left;   if(bitmap!=null)   {    if(bitmap.Width>bitmap.Height)    {     pictureBox.Width=panel1.Width;     pictureBox.Height=      (int)((double) bitmap.Height*panel1.Width/bitmap.Width);    }    else    {     pictureBox.Height=panel1.Height;     pictureBox.Width=      (int)((double) bitmap.Width*panel1.Height/bitmap.Height);    }   }   else   {    pictureBox.Width=panel1.Width;    pictureBox.Height=panel1.Height;   }   pictureBox.Refresh();  }

      private void treeViewDir_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)  {   if(bitmap!=null)   {    bitmap.Dispose();   }   try   {    string fileName=GetPathFromNode(e.Node);    bitmap=new Bitmap(fileName);    FileInfo f=new FileInfo(fileName);    if(bitmap.Width>bitmap.Height)    {     pictureBox.Width=panel1.Width;     pictureBox.Height=      (int)((double) bitmap.Height*panel1.Width/bitmap.Width);    }    else    {     pictureBox.Height=panel1.Height;     pictureBox.Width=      (int)((double) bitmap.Width*panel1.Height/bitmap.Height);    }    pictureBox.Image=bitmap;    this.Text="图像浏览"+f.Name;   }   catch   {    pictureBox.Width=panel1.Width;    pictureBox.Height=panel1.Height;   }  }

      private void treeViewDir_BeforeExpand(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)  {   DirNode nodeExpanding=(DirNode)e.Node;   if(!nodeExpanding.SubDirectoriesAdded)   {    AddSubDirs(nodeExpanding);   }  }  private void AddSubDirs(DirNode node)  {   for(int i=0;i    {     AddDirs(node.Nodes[i]);    }    node.SubDirectoriesAdded=true;   }  } }

    (四).示例代码下载

           http://www.cnblogs.com/Files/ChengKing/TreeView_WinForm.rar

     

     

     

    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=572497


    最新回复(0)