[[tree]]
 

http://kmlinux/~culik/wiki

namespace tree
{
    public class MyNode : TreeNode
    {
        public string path;
        public bool scanned = false;
    }
}
        private void showDrives (TreeNodeCollection above)
        {
           DriveInfo [] info = DriveInfo.GetDrives ();
           foreach (DriveInfo d in info)
           {
               MyNode node = new MyNode();
               node.path = d.ToString();
               node.Text = d.Name;
               node.ToolTipText = d.ToString();
               above.Add(node);
               showDir2 (node, d.RootDirectory, 1);
           }
        }
 
        private void showDir2 (MyNode above, 
                               DirectoryInfo dir, 
                               int level)
        {
            try
            {
                above.scanned = true;
                foreach (DirectoryInfo d in dir.GetDirectories())
                {
                    MyNode node = new MyNode();
                    node.path = d.FullName;
                    node.Text = d.Name;
                    node.ToolTipText = d.FullName;
 
                    above.Nodes.Add(node);
                    if (level > 1)
                        showDir2(node, d, level - 1);
                }
            }
            catch (Exception e)
            {
                TreeNode node = new TreeNode();
                node.Text = e.ToString();
                node.ForeColor = Color.Red;
            }
        }
 
        private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
        {
            // e.Cancel = true;
            MyNode node = e.Node as MyNode;
            if (node != null)
                showDir3 (node, 2); 
 
        }
 
        private void showDir3 (MyNode above, int level)
        {
            if (above.scanned)
            {
                if (level > 1)
                    foreach (MyNode n in above.Nodes)
                       showDir3 (n, level - 1);
            }
            else
            {
                showDir2 (above, new DirectoryInfo (above.path), level);
            }
        }
 
        private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            listView1.Items.Clear ();
            while (tabControl1.TabPages.Count >= 2)
                tabControl1.TabPages.RemoveAt (1);
 
            MyNode node = e.Node as MyNode;
            if (node != null)
            {
                try
                {
                    DirectoryInfo dir = new DirectoryInfo(node.path);
                    FileInfo[] files = dir.GetFiles();
                    foreach (FileInfo f in files)
                    {
                        ListViewItem item = new ListViewItem();
                        item.Text = f.Name;
                        item.ToolTipText = f.FullName;
                        item.SubItems.Add("" + f.Length);
                        item.SubItems.Add("" + f.LastWriteTime);
                        listView1.Items.Add(item);
 
                        /*
                        Icon icon = Icon.ExtractAssociatedIcon(f.FullName);
                        imageList1.Images.Add(icon);
                        item.ImageIndex = imageList1.Images.Count;
                         */
 
                        string key = f.Extension;
                        bool img = false;
                        if (key == ".jpg" || key == ".bmp")
                        {
                            key = f.Name;
                            img = true;
                        }
                        if (!imageList1.Images.ContainsKey(key))
                        {
                            if (!img)
                            {
                                Icon icon = Icon.ExtractAssociatedIcon(f.FullName);
                                imageList1.Images.Add(key, icon);
                            }
                            else
                            {
                                Bitmap p = new Bitmap (f.FullName);
                                Bitmap t = new Bitmap (imageList1.ImageSize.Width,
                                                       imageList1.ImageSize.Height);
                                Graphics g = Graphics.FromImage (t);
                                g.DrawImage (p, 0, 0, t.Width, t.Height);
                                imageList1.Images.Add(key, t);
                            }
                        }
                        item.ImageIndex = imageList1.Images.IndexOfKey(key);
                    }
                }
                catch (Exception ee)
                {
                    ListViewItem item = new ListViewItem ();
                    item.Text = ee.ToString();
                    item.ForeColor = Color.Red;
                }
            }
        }
 
 
        private void showDir(TreeNode above, string path)
        {
            // using System.IO;
            DirectoryInfo dir = new DirectoryInfo (path);
            DirectoryInfo [] info = dir.GetDirectories ();
 
            foreach (DirectoryInfo d in info)
            { 
                TreeNode node = new TreeNode ();
                node.Text = d.Name;
                node.ToolTipText = d.FullName;
 
                if (above == null)
                    treeView1.Nodes.Add(node);
                else
                    above.Nodes.Add(node);
 
                showDir(node, d.FullName);
            }
        }
 
        private void listView1_DoubleClick(object sender, EventArgs e)
        {
            foreach (ListViewItem item in listView1.SelectedItems)
            {
                String s = item.ToolTipText;
                TabPage page = new TabPage();
                page.Text = s;
                tabControl1.TabPages.Add(page);
 
                if (s.EndsWith(".jpg") || s.EndsWith(".bmp"))
                {
                    Panel p = new Panel();
                    p.Parent = page;
                    p.Dock = DockStyle.Fill;
                    p.BackgroundImage = new Bitmap(s);
                }
            }
        }
 
tree.txt · Last modified: 2013/11/21 15:02 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