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

    技术2022-05-11  57

    (一).说明

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

    (二).图片示例

    (三).代码

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

    namespace 图像格式转II{ /// <summary> /// Form1 的摘要说明。 /// </summary> 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;  /// <summary>  /// 必需的设计器变量。  /// </summary>  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();    }

      /// <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.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<drivers.Length;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<e.Length;i++)    {     name=e[i].Name;     if(!name.Equals(".")&&!name.Equals(".."))     {      node.Nodes.Add(new DirNode(name));     }    }    for(int i=0;i<f.Length;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);  }  /// <summary>  /// 应用程序的主入口点。  /// </summary>  [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<node.Nodes.Count;i++)   {    AddDirs(node.Nodes[i]);   }   node.SubDirectoriesAdded=true;  } }}

    (四).示例代码下载

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

     

     

     


    最新回复(0)