public TreeForm()
        {
            InitializeComponent();
 
            tree.ShowNodeToolTips = true;
            tabControl.ShowToolTips = true;
            tabControl.Controls.Clear ();
 
            // using System.IO;
            DriveInfo[] disks = DriveInfo.GetDrives();
            foreach (var disk in disks)
            {
                // var d = new DirectoryInfo("../../../..");
                // this.Text = d.FullName;
                DirectoryInfo d = disk.RootDirectory;
 
                MyNode branch = new MyNode();
                branch.Text = d.Name;
                branch.ToolTipText = d.FullName;
                branch.ForeColor = Color.Orange;
                branch.path = d.FullName;
                branch.directory = true;
                tree.Nodes.Add(branch);
 
                displayDir(branch, d);
 
                // branch.ExpandAll ();
                // branch.Expand();
            }
        }
 
        private void displayDir(MyNode target, DirectoryInfo dir, int level = 1)
        {
            try
            {
                DirectoryInfo[] items = dir.GetDirectories();
                foreach (var item in items)
                {
                    MyNode node = new MyNode();
                    node.Text = item.Name;
                    node.ToolTipText = item.FullName;
                    node.ForeColor = Color.Lime;
                    node.path = item.FullName;
                    node.directory = true;
                    target.Nodes.Add(node);
                    if (level > 1)
                        displayDir(node, item, level - 1);
                }
 
                FileInfo[] file_items = dir.GetFiles();
                foreach (var item in file_items)
                {
                    MyNode node = new MyNode();
                    node.Text = item.Name;
                    node.ToolTipText = item.FullName;
                    node.ForeColor = Color.Blue;
                    node.path = item.FullName;
                    target.Nodes.Add(node);
                }
                target.complete = true;
            }
            catch (Exception ex)
            {
                TreeNode node = new TreeNode();
                node.Text = ex.Message;
                node.ToolTipText = ex.StackTrace;
                node.ForeColor = Color.Red;
                target.Nodes.Add(node);
            }
        }
 
        private void tree_BeforeExpand(object sender, TreeViewCancelEventArgs e)
        {
            TreeNode branch = e.Node;
            foreach (TreeNode tree_item in branch.Nodes)
            {
                if (tree_item is MyNode)
                {
                    MyNode item = tree_item as MyNode;
                    if (item.directory && !item.complete)
                        displayDir(item, new DirectoryInfo(item.path));
                }
            }
        }
 
        private void tree_DoubleClick (object sender, EventArgs e)
        {
            // tabControl.ShowToolTips = true;
            // tabControl.Controls.Clear ();
 
            TreeNode tree_node = tree.SelectedNode;
            if (tree_node is MyNode node)
            {
                // MyNode node = tree_node as MyNode;
                if (!node.directory)
                {
                    var fi = new FileInfo (node.path);
                    TabPage page = new TabPage();
                    page.Text = fi.Name;
                    page.ToolTipText = fi.FullName;
                    tabControl.Controls.Add(page);
 
                    string ext = fi.Extension;
                    switch (ext)
                    {
                        case ".txt":
                        case ".h":
                        case ".c":
                        case ".cpp":
                        case ".pas":
                            TextBox edit = new TextBox();
                            edit.Multiline = true;
                            edit.Dock = DockStyle.Fill;
                            edit.Text = File.ReadAllText (node.path);
                            page.Controls.Add (edit);
                            break;
 
                        case ".png":
                        case ".bmp":
                        case ".jpg":
                        case ".jpeg":
                            Panel picture = new Panel();
                            picture.BackgroundImage = new Bitmap(node.path);
                            picture.BackgroundImageLayout = ImageLayout.Stretch;
                            picture.Dock = DockStyle.Fill;
                            page.Controls.Add(picture);
                            break;
                    }
                }
            }

zip

 
pw/tree2021.txt · Last modified: 2021/11/24 13:26 by 147.32.8.115
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki