这是 C# 资源管理器
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO; namespace MyFileBrowser{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }         private void Form1_Load(object sender, EventArgs e)        {            TreeNode rootnode = this.treeView1.Nodes[0];            rootnode.Expand();            TreeNode ndMyComputer = null;            TreeNode ndMyDocument = null;            foreach (TreeNode nd in rootnode.Nodes)            {                if (nd.Name=="ndMyComputer")                {                    ndMyComputer = nd;                                    }                if (nd.Name=="ndMyDocument")                {                    ndMyDocument = nd;                                    }            }                    DriveInfo[] drivers = DriveInfo.GetDrives();            foreach (DriveInfo  driver in drivers)            {                TreeNode node = new TreeNode(driver.Name);                node.ImageKey = "driver.ico";                node.SelectedImageKey = "driver.ico";                node.Tag = driver.RootDirectory.FullName;                ndMyComputer.Nodes.Add(node);            }             string MyDocumentPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);            DirectoryInfo MyDocument = new DirectoryInfo(MyDocumentPath);            DirectoryInfo[] folders = MyDocument.GetDirectories();            foreach (DirectoryInfo folder in folders)            {                TreeNode node = new TreeNode(folder.Name);                node.ImageKey = "folder.ico";                node.SelectedImageKey = "folder.ico";                node.Tag = folder.FullName;                ndMyDocument.Nodes.Add(node);            }        }         private void Form1_SizeChanged(object sender, EventArgs e)        {            this.tsbAddress.Width = this.toolStrip2.Width - 110;        }         private void treeView1_AfterExpand(object sender, TreeViewEventArgs e)        {            if (e.Node.Parent==null)            {                return;            }             foreach (TreeNode node in e.Node.Nodes)            {                if (node.Tag==null)                {                    continue;                }                DirectoryInfo folder = new DirectoryInfo(node.Tag.ToString());                DirectoryInfo[] subFolders = null;                try                {                    subFolders = folder.GetDirectories();                }                catch (IOException)                {                 }                catch (UnauthorizedAccessException)                {                  }                if (subFolders != null)                {                    foreach (DirectoryInfo subFolder in subFolders)                    {                        TreeNode subNode = new TreeNode(subFolder.Name);                        subNode.ImageKey = "folder.ico";                        subNode.SelectedImageKey = "folder.ico";                        subNode.Tag = subFolder.FullName;                        node.Nodes.Add(subNode);                    }                }                                                }        }        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)        {            if (e.Action == TreeViewAction.ByKeyboard || e.Action == TreeViewAction.ByMouse)            {                if (e.Node.Tag == null)                {                     this.Text = e.Node.Text;                    this.tsbAddress.Text = e.Node.Text;                }                else                {                    this.Text = e.Node.Tag.ToString();                    this.tsbAddress.Text = e.Node.Tag.ToString();                }            }            this.listView1.Items.Clear();            if (e.Node.Tag != null)            {                string folderPath = e.Node.Tag.ToString();                DirectoryInfo folder = new DirectoryInfo(folderPath);                DirectoryInfo[] subFolders = null;                try                {                    subFolders = folder.GetDirectories();                }                catch (UnauthorizedAccessException)                {                 }                 if (subFolders!=null)                {                    foreach (DirectoryInfo subfolder in subFolders)                    {                        listView1.Items.Add(new ListViewItem(new string[] { subfolder.Name, "文件夹", "", "" },"folder.ico"));                     }                }                FileInfo[] files = null;                try                {                    files = folder.GetFiles();                }                catch (UnauthorizedAccessException)                {                 }                if (files != null)                {                    foreach (FileInfo file in files)                    {                        listView1.Items.Add(new ListViewItem(new string[] { file.Name, "文件", GetFileSize(file), file.LastWriteTime.ToShortDateString() },"file.ico"));                    }                 }            }        }        private string GetFileSize(FileInfo file)        {            string result = null;            long filesize = file.Length;            if (filesize >= 1024 * 1024 * 1024)            {                result = string.Format("{0:########0.00} GB",(double) filesize / (1024 * 1024 * 1024));            }            else if (filesize >= 1024 * 1024)            {                result = string.Format("{0:####0.00} MB", (double) filesize / (1024 * 1024));            }            else if (filesize >= 1024)            {                result = string.Format("{0:####0.00} KB", (double) filesize / 1024);            }            else            {                result = string.Format("{0} Bytes", filesize);            }            return result;        }        private void tsbHideTree_Click(object sender, EventArgs e)        {            this.panel1.Hide();            this.tsbShowTree.Checked = false;        }         private void tsbShowTree_Click(object sender, EventArgs e)        {            if (this.tsbShowTree.Checked)            {                this.panel1.Show();            }            else            {                              this.panel1.Hide();            }        }         private void tsbUp_Click(object sender, EventArgs e)        {            TreeNode node = treeView1.SelectedNode;            TreeNode ParentNode = node.Parent;            if (ParentNode!=null)            {                this.treeView1.SelectedNode = ParentNode;            }        }           }}

解决方案 »

  1.   

    完整的源码拷到VS里,看下就明白了。
    不明白的按F1
      

  2.   

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;namespace MyFileBrowser
    {    public partial class Form1 : Form
        {
            //窗体初始化
            public Form1()
            {            InitializeComponent();        }
            //窗体加载
            private void Form1_Load(object sender, EventArgs e)
            {
                //创建一个树节点,并将窗体树节点付给它
                TreeNode rootnode = this.treeView1.Nodes[0];
                //展开树
                rootnode.Expand();            TreeNode ndMyComputer = null;            TreeNode ndMyDocument = null;            //循环树的根节点,将相等符合的付给上面两个变量
                foreach (TreeNode nd in rootnode.Nodes)
                {                if (nd.Name == "ndMyComputer")
                    {                    ndMyComputer = nd;                }                if (nd.Name == "ndMyDocument")
                    {                    ndMyDocument = nd;                }            }
                //获得当前计算机所有驱动器的信息
                DriveInfo[] drivers = DriveInfo.GetDrives();            //获取单个驱动的信息
                foreach (DriveInfo driver in drivers)
                {
                    //创建一个以驱动名字为节点文本的节点
                    TreeNode node = new TreeNode(driver.Name);                node.ImageKey = "driver.ico";                node.SelectedImageKey = "driver.ico";                node.Tag = driver.RootDirectory.FullName;                ndMyComputer.Nodes.Add(node);            }
                //获取程序文件本身的路径
                string MyDocumentPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);            //根据路径获取目录信息
                DirectoryInfo MyDocument = new DirectoryInfo(MyDocumentPath);            DirectoryInfo[] folders = MyDocument.GetDirectories();
                //循环目录
                foreach (DirectoryInfo folder in folders)
                {
                    //创建一个以目录名为节点文本的节点
                    TreeNode node = new TreeNode(folder.Name);                node.ImageKey = "folder.ico";                node.SelectedImageKey = "folder.ico";                node.Tag = folder.FullName;                ndMyDocument.Nodes.Add(node);            }        }
            //窗体大小改变事件
            private void Form1_SizeChanged(object sender, EventArgs e)
            {
                //将工具条的宽度减110之后付给tsbAddress控件
                this.tsbAddress.Width = this.toolStrip2.Width - 110;        }
            //树节点展开后的事件
            private void treeView1_AfterExpand(object sender, TreeViewEventArgs e)
            {
                //如果节点的父节点为空,结束
                if (e.Node.Parent == null)
                {                return;            }
                //不为空, 循环所有节点
                foreach (TreeNode node in e.Node.Nodes)
                {
                    //节点标签为空,continue
                    if (node.Tag == null)
                    {                    continue;                }                //创建一个目录信息
                    DirectoryInfo folder = new DirectoryInfo(node.Tag.ToString());                DirectoryInfo[] subFolders = null;                try
                    {
                        //获取子目录
                        subFolders = folder.GetDirectories();                }                catch (IOException)
                    {                }                catch (UnauthorizedAccessException)
                    {                }
                    //子目录不为空
                    if (subFolders != null)
                    {
                        //循环目录信息
                        foreach (DirectoryInfo subFolder in subFolders)
                        {
                            //以子目录名为节点文本创建节点
                            TreeNode subNode = new TreeNode(subFolder.Name);                        subNode.ImageKey = "folder.ico";                        subNode.SelectedImageKey = "folder.ico";                        subNode.Tag = subFolder.FullName;                        node.Nodes.Add(subNode);                    }                }            }        }
            //树节点选中后的事件
            private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
            {
                //如果是键盘触发或者是鼠标触发
                if (e.Action == TreeViewAction.ByKeyboard || e.Action == TreeViewAction.ByMouse)
                {
                    //标签为空
                    if (e.Node.Tag == null)
                    {
                        //将节点文本付给Text
                        this.Text = e.Node.Text;                    this.tsbAddress.Text = e.Node.Text;                }                else
                    {
                        //将Tag付给Text
                        this.Text = e.Node.Tag.ToString();                    this.tsbAddress.Text = e.Node.Tag.ToString();                }            }
                //清空listView1
                this.listView1.Items.Clear();            if (e.Node.Tag != null)
                {
                    //同上
                    string folderPath = e.Node.Tag.ToString();                DirectoryInfo folder = new DirectoryInfo(folderPath);                DirectoryInfo[] subFolders = null;                try
                    {                    subFolders = folder.GetDirectories();                }                catch (UnauthorizedAccessException)
                    {                }                if (subFolders != null)
                    {                    foreach (DirectoryInfo subfolder in subFolders)
                        {
                            //将文件目录信息添加到listView1中
                            listView1.Items.Add(new ListViewItem(new string[] { subfolder.Name, "文件夹", "", "" }, "folder.ico"));                    }                }                FileInfo[] files = null;                try
                    {                    files = folder.GetFiles();                }                catch (UnauthorizedAccessException)
                    {                }                if (files != null)
                    {                    foreach (FileInfo file in files)
                        {
                            //将文件信息添加到listView1中
                            listView1.Items.Add(new ListViewItem(new string[] { file.Name, "文件", GetFileSize(file), file.LastWriteTime.ToShortDateString() }, "file.ico"));                    }                }            }        }
            /// <summary>
            /// 返回文件大小
            /// </summary>
            /// <param name="file">文件信息</param>
            /// <returns>文件大小</returns>
            private string GetFileSize(FileInfo file)
            {            string result = null;            long filesize = file.Length;
                //文件大小, GB 千兆
                if (filesize >= 1024 * 1024 * 1024)
                {                result = string.Format("{0:########0.00} GB", (double)filesize / (1024 * 1024 * 1024));            }
                //MB 兆
                else if (filesize >= 1024 * 1024)
                {                result = string.Format("{0:####0.00} MB", (double)filesize / (1024 * 1024));            }
                //KB 千字节
                else if (filesize >= 1024)
                {                result = string.Format("{0:####0.00} KB", (double)filesize / 1024);            }
                //Bytes 字节
                else
                {                result = string.Format("{0} Bytes", filesize);            }            return result;        }        private void tsbHideTree_Click(object sender, EventArgs e)
            {
                //panel隐藏
                this.panel1.Hide();
                //checkbox选中状态设为False
                this.tsbShowTree.Checked = false;        }        private void tsbShowTree_Click(object sender, EventArgs e)
            {
                //选中            if (this.tsbShowTree.Checked)
                {
                    //panel显示
                    this.panel1.Show();            }            else
                {
                    //否者隐藏
                    this.panel1.Hide();            }        }        private void tsbUp_Click(object sender, EventArgs e)
            {
                //将选中的节点付给一个新的节点
                TreeNode node = treeView1.SelectedNode;
                //获取节点的父节点
                TreeNode ParentNode = node.Parent;            //不为空,选中的节点设置为父节点
                if (ParentNode != null)
                {                this.treeView1.SelectedNode = ParentNode;            }        }    }}