Directory Tree Host : Directory « File Stream « C# / C Sharp






Directory Tree Host

Directory Tree Host
     
/*
User Interfaces in C#: Windows Forms and Custom Controls
by Matthew MacDonald

Publisher: Apress
ISBN: 1590590457
*/

using System.IO;

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

namespace DirectoryTreeHost
{
    /// <summary>
    /// Summary description for DirectoryTreeHost.
    /// </summary>
    public class DirectoryTreeHost : System.Windows.Forms.Form
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public DirectoryTreeHost()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose( bool disposing )
        {
            if( disposing )
            {
                if(components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose( disposing );
        }

        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            // 
            // DirectoryTreeHost
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(292, 266);
            this.Name = "DirectoryTreeHost";
            this.Text = "DirectoryTreeHost";
            this.Load += new System.EventHandler(this.DirectoryTreeHost_Load);

        }
        #endregion

        private void DirectoryTreeHost_Load(object sender, System.EventArgs e)
        {
            DirectoryTree dirTree = new 
                DirectoryTree();
            dirTree.Size = new Size(this.Width - 30, this.Height - 60);
            dirTree.Location = new Point(5, 5);
            dirTree.Drive = Char.Parse("C");
            this.Controls.Add(dirTree);

        }

        public static void Main()
        {
            Application.Run(new DirectoryTreeHost());
        }
    }
    public class DirectoryTree : TreeView
    {
        public delegate void DirectorySelectedDelegate(object sender,
            DirectorySelectedEventArgs e);
        public event DirectorySelectedDelegate DirectorySelected;
        
        private Char drive;
        public Char Drive
        {
            get
            {
                return drive;
            }
            set
            {
                drive = value;
                RefreshDisplay();
            }
        }
        
        // This is public so a Refresh can be triggered manually.
        public void RefreshDisplay()
        {
            // Erase the existing tree.
            this.Nodes.Clear();
            
            // Set the first node.
            TreeNode rootNode = new TreeNode(drive + ":\\");
            this.Nodes.Add(rootNode);
            
            // Fill the first level and expand it.
            Fill(rootNode);
            this.Nodes[0].Expand();
        }
        
        private void Fill(TreeNode dirNode)
        {
            DirectoryInfo dir = new DirectoryInfo(dirNode.FullPath);
            
            // An exception could be thrown in this code if you don't
            // have sufficient security permissions for a file or directory.
            // You can catch and then ignore this exception.
            
            foreach (DirectoryInfo dirItem in dir.GetDirectories())
            {
                // Add node for the directory.
                TreeNode newNode = new TreeNode(dirItem.Name);
                dirNode.Nodes.Add(newNode);
                newNode.Nodes.Add("*");
            }
        }
        
        protected override void OnBeforeExpand(TreeViewCancelEventArgs e)
        {
            base.OnBeforeExpand(e);

            // If a dummy node is found, remove it and read the real directory list.
            if (e.Node.Nodes[0].Text == "*")
            {
                e.Node.Nodes.Clear();
                Fill(e.Node);
            }
        }
        
        protected override void OnAfterSelect(TreeViewEventArgs e)
        {
            base.OnAfterSelect(e);
            
            // Raise the DirectorySelected event.
            if (DirectorySelected != null)
            {
                DirectorySelected(this,
                    new DirectorySelectedEventArgs(e.Node.FullPath));
            }
        }
    }
    public class DirectorySelectedEventArgs : EventArgs
    {
        public string DirectoryName;

        public DirectorySelectedEventArgs(string directoryName)
        {
            this.DirectoryName = directoryName;
        }
    }



}


           
         
    
    
    
    
  








Related examples in the same category

1.Find Files That Match a Wildcard Expression
2.Get Files from a directory
3.Get Directory properties from DirectionInfo class
4.Get directory name and file information in that directory
5.Directory Counter
6.File Search
7.Get Name, Parent, Exists properties from DirectoryInfo class
8.Get Creation Time
9.Get Last Write Time
10.Get Last Access Time
11.Calculate Directory Size
12.Copy Directory
13.Check the Existance of a Directory
14.Get Current Directory
15.Set Current Directory
16.Traversing DirectoriesTraversing Directories
17.Directory Object
18.illustrates recursive Directory useillustrates recursive Directory use
19.illustrates the Directory classillustrates the Directory class
20.illustrates the Directory class 2illustrates the Directory class 2
21.Uses the DirectoryInfo class to recursively show subdirectoriesUses the DirectoryInfo class to recursively show subdirectories
22.Changes the current working directory and then lists the files in the directoryChanges the current working directory and then lists the files in the directory
23.Gets the size of all files within a directory
24.Determine if the directory is empty, ie. no files and no sub-directories
25.Get an array of files info from a directory.
26.Removes a directory as best as it can. Errors are ignored.
27.Directory Class xxposes static methods for creating, moving, and enumerating through directories and subdirectories.
28.Calculates the size of a directory and its subdirectories, if any, and displays the total size in bytes.
29.Gets the current working directory of the application.
30.Directory Class
31.Calculate the size of a directory and its subdirectories, if any, and displays the total size in bytes.
32.Creates all directories and subdirectories in the specified path.
33.Create new nested directories
34.Deletes an empty directory from a specified path.
35.Deletes the directory any subdirectories and files in the directory.
36.Returns an enumerable collection of directory names in a specified path.
37.Returns an enumerable collection of directory names that match a search pattern in a specified path.
38.Get collection of directory names that match a search pattern, and optionally searches subdirectories.
39.Returns an enumerable collection of file names in a specified path.
40.Returns an enumerable collection of file names that match a search pattern in a specified path.
41.Get a collection of file names that match a search pattern, and optionally searches subdirectories.
42.Determines whether the given path refers to an existing directory on disk.
43.Gets a DirectorySecurity object that encapsulates the access control list (ACL) entries
44.Gets the creation date and time of a directory.
45.Gets the creation date and time, in Coordinated Universal Time (UTC) format, of a directory.
46.Gets the names of subdirectories in the specified directory.
47.Gets an array of directories matching the specified search pattern from the current directory.
48.Returns the volume information, root information, or both for the specified path.
49.Returns the names of files that match the specified search pattern
50.Returns the names of all files and subdirectories in the specified directory.
51.Returns the date and time the specified file or directory was last accessed.
52.Returns the date and time the specified file or directory was last written to.
53.Sets the date and time the specified file or directory was last accessed.
54.Sets the date and time a directory was last written to.
55.Instance methods for creating, moving, and enumerating through directories and subdirectories.
56.Copy directories with DirectoryInfo
57.DriveInfo Class Provides access to information on a drive.
58.Read and Write to a Newly Created Data File
59.Read Text from a File
60.File.OpenText returns a StreamReader
61.Write Text to a File
62.Copy,delete file and directory
63.Find all files in a directory, and all files within every nested directory.
64.Find all files in a directory, and all files within every nested directory. (2)
65.Current Dir
66.Directory Walker
67.Create Directory
68.Class, which describes folder with its subfolders.