FolderTree.cs
上传用户:lxycoco
上传日期:2022-07-21
资源大小:38457k
文件大小:2k
源码类别:

C#编程

开发平台:

Others

  1. using System;
  2. using System.Windows.Forms;
  3. using System.IO;
  4. using System.ComponentModel;
  5. namespace FolderTree
  6. {
  7. /// <summary>
  8. /// Summary description for FolderTreeCtrl.
  9. /// </summary>
  10. public class FolderTree : System.Windows.Forms.TreeView,ISupportInitialize
  11. {
  12.     string _rootFolder = "";
  13.     bool _showFiles = true;
  14.     bool _inInit = false;
  15. public FolderTree()
  16. {
  17. //
  18. // TODO: Add constructor logic here
  19. //
  20.     }
  21.     private void InitializeTree()
  22.     {
  23.       if(!this.DesignMode)
  24.       {
  25.         FolderNode rootNode = new FolderNode(_rootFolder);
  26.         LoadTree(rootNode);
  27.         this.Nodes.Clear();
  28.         this.Nodes.Add(rootNode);
  29.       }
  30.     }
  31.     private void LoadTree(FolderNode folder)
  32.     {
  33.       string[] dirs = Directory.GetDirectories(folder.FolderPath);
  34.       foreach(string dir in dirs)
  35.       {
  36.         FolderNode tmpfolder = new FolderNode(dir);
  37.         folder.Nodes.Add(tmpfolder);
  38.         LoadTree(tmpfolder);
  39.       }
  40.       if(_showFiles)
  41.       {
  42.     
  43.         string[] files = Directory.GetFiles(folder.FolderPath);
  44.         foreach(string file in files)
  45.         {
  46.           FileNode fnode = new FileNode(file);
  47.           folder.Nodes.Add(fnode);
  48.         }
  49.       }  
  50.     }
  51.     
  52.     [Category("Behavior"), 
  53.     Description("Gets or sets the base or root folder of the tree"),
  54.     DefaultValue("")]
  55.     public string RootFolder
  56.     {
  57.       get {return _rootFolder;}
  58.       set 
  59.       {
  60.         _rootFolder = value;
  61.         if(!_inInit)
  62.           InitializeTree();
  63.        
  64.       }
  65.     }
  66.     [Category("Behavior"),
  67.       Description("Indicates whether files will be seen in the list."),
  68.       DefaultValue(true)]
  69.     public bool ShowFiles
  70.     {
  71.       get {return _showFiles;}
  72.       set {_showFiles = value;}
  73.     }
  74.     [Browsable(false)]
  75.     public string SelectedFolder
  76.     {
  77.       get 
  78.       {
  79.         if(this.SelectedNode is FolderNode)
  80.           return ((FolderNode)this.SelectedNode).FolderPath;
  81.         
  82.         return "";
  83.       }
  84.     }
  85.     #region ISupportInitialize Members
  86.     public void BeginInit()
  87.     {
  88.       _inInit = true;
  89.     }
  90.     public void EndInit()
  91.     {
  92.       if(_rootFolder != "")
  93.       {
  94.         InitializeTree();
  95.       }
  96.       _inInit = false;
  97.     }
  98.     #endregion
  99.   }
  100. }