using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using System.Collections;
using System.Windows.Forms;
 
 
namespace Directories
{
    class ListViewItemComparer  : IComparer
    {
        private int col;
        public ListViewItemComparer()
        {
            col = 0;
        }
        public ListViewItemComparer(int column)
        {
            col = column;
        }
        public int Compare(object x, object y)
        {
            ListViewItem a = (ListViewItem) x;
            ListViewItem b = (ListViewItem) y;
            return String.Compare (a.SubItems [col].Text, b.SubItems[col].Text);
        }
    }
 
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
using System.IO;
 
namespace Directories
{
 
 
 
    public partial class Window : Form
    {
        public Window()
        {
            InitializeComponent();
            treeView1.ShowNodeToolTips = true;
            initTree ();
        }
 
        private void initTree ()
        {
            // var drives = DriveInfo.GetDrives ();
            // foreach (var d in drives)
            DriveInfo [] drives = DriveInfo.GetDrives ();
            foreach (DriveInfo d in drives)
            {
                showBranch (treeView1.Nodes, d.RootDirectory.FullName);
            }
        }
 
        MyNode showDirectory (TreeNodeCollection target, string path, string name)
        {
            MyNode node = new MyNode();
            node.Text = name;
            node.path = path;
            node.ready = false;
            node.ToolTipText = path;
            target.Add (node);
            return node;
        }
 
        void showSubdirs (MyNode node, DirectoryInfo dir)
        {
            try
            {
                DirectoryInfo[] subdirs = dir.GetDirectories();
                foreach (DirectoryInfo d in subdirs)
                    showDirectory(node.Nodes, d.FullName, d.Name);
                node.ready = true;
            }
            catch (Exception e)
            {
                node.ForeColor = Color.Red;
                node.ToolTipText = node.ToolTipText + " : " + e.Message;
            }
        }
 
        void showBranch (TreeNodeCollection target, string path)
        {
            DirectoryInfo dir = new DirectoryInfo (path);
            MyNode node = showDirectory (target, dir.FullName, dir.Name);
            showSubdirs (node, dir);
        }
 
        private void treeView1_BeforeExpand (object sender, TreeViewCancelEventArgs e)
        {
           foreach (TreeNode n in e.Node.Nodes)
           {
               MyNode node = n as MyNode;
               if (node != null && ! node.ready)
               {
                   DirectoryInfo dir = new DirectoryInfo (node.path);
                   showSubdirs (node, dir);
               }
            }
        }
 
        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            MyNode node = e.Node as MyNode;
            if (node != null)
               showFiles (node.path);
        }
 
        private void showFiles (string path)
        {
            listView1.Items.Clear ();
            listView1.ShowItemToolTips = true;
 
            try
            {
                DirectoryInfo dir = new DirectoryInfo (path);
                statusLabel.Text = dir.FullName;
                FileInfo[] files = dir.GetFiles();
                int cnt = 0;
                foreach (FileInfo f in files)
                {
                    MyItem item = new MyItem();
                    item.Text = f.Name;
                    item.ToolTipText = f.FullName;
                    item.path = f.FullName;
                    //item.ImageIndex = cnt % imageList2.Images.Count;
                    cnt++;
                    item.SubItems.Add(f.Length.ToString("### ### ### ##0"));
                    item.SubItems.Add(f.LastWriteTime.ToString("yyyy-MM-dd HH:mm"));
 
                    listView1.Items.Add (item);
                    // statusLabel.Text += ", " + f.Name;
                }
            }
            catch (Exception e)
            {
                ListViewItem item = new ListViewItem();
                item.Text = e.Message;
                listView1.Items.Add (item);
            }
        }
 
        private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
        {
            listView1.ListViewItemSorter = new ListViewItemComparer (e.Column);
              // e.Column.
        }
 
        private void listView1_DoubleClick(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count == 1)
            {
                ListViewItem t = listView1.SelectedItems [0];
                MyItem item = t as MyItem;
                if (item != null)
                    showOneFile (item.path);
            }
        }
 
        private void showOneFile (String path)
        {
            try
            {
                FileInfo f = new FileInfo (path);
                string ext = f.Extension;
                if (ext == ".bmp" || ext == ".jpeg" || ext == ".jpg")
                {
                    pictureBox1.Image = new Bitmap (f.FullName);
                    tabControl1.SelectedTab = imagePage;
                }
            }
            catch (Exception e)
            {
            }
        }
 
    }
}
 
 
 
treeview2.txt · Last modified: 2016/12/06 11:06 by 147.32.6.116
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki