widow环境下的资源管理器浏览文件(c#)

1、创建基本节点

public static class TreeViewItems
{

   public static void Form1_Load(object sender, EventArgs e)
        {
            //实例化TreeNode类 TreeNode(string text,int imageIndex,int selectImageIndex)            
            TreeNode rootNode = new TreeNode("我的电脑",
                IconIndexes.MyComputer, IconIndexes.MyComputer);  //载入显示 选择显示
            rootNode.Tag = "我的电脑";                            //树节点数据
            rootNode.Text = "我的电脑";                           //树节点标签内容
            this.treeView1.Nodes.Add(rootNode);               //树中添加根目录


            //显示MyDocuments(我的文档)结点
            var myDocuments = Environment.GetFolderPath           //获取计算机我的文档文件夹
                (Environment.SpecialFolder.MyDocuments);
            TreeNode DocNode = new TreeNode(myDocuments);
            DocNode.Name = myDocuments;
            DocNode.Tag = "我的文档";                            //设置结点名称
            DocNode.Text = "我的文档";
            DocNode.ImageIndex = IconIndexes.MyDocuments;      //设置获取结点显示图片
            DocNode.SelectedImageIndex = IconIndexes.MyDocuments; //设置选择显示图片
            rootNode.Nodes.Add(DocNode);                          //rootNode目录下加载节点
            DocNode.Nodes.Add("");


            //显示MyDocuments(我的文档)结点
            var desktop = Environment.GetFolderPath           //获取计算机我的文档文件夹
                (Environment.SpecialFolder.Desktop);
            TreeNode desNode = new TreeNode(desktop);
            desNode.Name = desktop;
            desNode.Tag = "桌面";                            //设置结点名称
            desNode.Text = "桌面";
            desNode.ImageIndex = IconIndexes.Desktop;      //设置获取结点显示图片
            desNode.SelectedImageIndex = IconIndexes.Desktop; //设置选择显示图片
            rootNode.Nodes.Add(desNode);                          //rootNode目录下加载节点
            desNode.Nodes.Add("");


            //循环遍历计算机所有逻辑驱动器名称(盘符)
            foreach (string drive in Environment.GetLogicalDrives())
            {
                //实例化DriveInfo对象 命名空间System.IO
                var dir = new DriveInfo(drive);
                switch (dir.DriveType)           //判断驱动器类型
                {
                    case DriveType.Fixed:        //仅取固定磁盘盘符 Removable-U盘 
                        {
                            //Split仅获取盘符字母
                            TreeNode tNode = new TreeNode(dir.Name.Split(':')[0]);
                            tNode.Name = dir.Name;
                            tNode.Tag = tNode.Name;
                            tNode.ImageIndex = IconIndexes.FixedDrive;         //获取结点显示图片
                            tNode.SelectedImageIndex = IconIndexes.FixedDrive; //选择显示图片
                            rootNode.Nodes.Add(tNode);                    //加载驱动节点
                            tNode.Nodes.Add("");
                        }
                        break;
                }
            }
            rootNode.Expand();                  //展开树状视图
        }
       
 }

2、遍历子节点

public static class TreeViewItems

   {
        public static void Add(TreeNode e)
        {
            //try..catch异常处理
            try
            {
                //判断"我的电脑"Tag 上面加载的该结点没指定其路径
                if (e.Tag.ToString() != "我的电脑")
                {
                    e.Nodes.Clear();                               //清除空节点再加载子节点
                    TreeNode tNode = e;                            //获取选中\展开\折叠结点
                    string path = tNode.Name;                      //路径  
                    //Console.Write(path);


                    //获取"我的文档"路径
                    if (e.Tag.ToString() == "我的文档")
                    {
                        path = Environment.GetFolderPath           //获取计算机我的文档文件夹
                            (Environment.SpecialFolder.MyDocuments);
                    }
                    //获取“桌面”的路径
                    if (e.Tag.ToString() == "桌面")
                    {
                        path = Environment.GetFolderPath           //获取计算机我的文档文件夹
                            (Environment.SpecialFolder.Desktop);
                    }


                    //获取指定目录中的子目录名称并加载结点
                    string[] dics = Directory.GetDirectories(path);
                    foreach (string dic in dics)
                    {
                        TreeNode subNode = new TreeNode(new DirectoryInfo(dic).Name); //实例化
                        subNode.Name = new DirectoryInfo(dic).FullName;               //完整目录
                        subNode.Tag = subNode.Name;
                        subNode.ImageIndex = IconIndexes.ClosedFolder;       //获取节点显示图片
                        subNode.SelectedImageIndex = IconIndexes.OpenFolder; //选择节点显示图片
                        tNode.Nodes.Add(subNode);
                        try { 
                            if( Directory.GetDirectories(subNode.Name).Length > 0 )
                            {
                                subNode.Nodes.Add("");  //加载空节点 实现+号 
                            }
                        }catch(Exception open)
                        {
                            continue;
                        }
                        
                                                                 
                    }
                }
            }
            catch (Exception msg)
            {
                MessageBox.Show(msg.Message);                   //异常处理
            }

        }

}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值