递归方法

 public partial class UserControl : Form
    {

      
        public UserControl()
        {
            InitializeComponent();
        
          
        }

 

        public void CreateTree(string str)
        {

            treeView1.Nodes.Clear();
            DriveInfo driver = new DriveInfo(str);
            TreeNode node = new TreeNode(driver.Name);
            //判断驱动器类型,用不同图标显示
            switch (driver.DriveType)
            {
                case DriveType.CDRom:   //光驱
                    {

                        node.ImageIndex = 1;
                        node.SelectedImageIndex = 1;
                        break;
                    }
                default:    //默认,显示为磁盘图标
                    {
                        node.ImageIndex = 0;
                        node.SelectedImageIndex = 0;
                        break;
                    }
            }
            DirectoryInfo dir = driver.RootDirectory;
            AddNode(dir, node);
            this.treeView1.Nodes.Add(node);

        }

        //(列出当前目录下的子目录)
        private void AddNode(DirectoryInfo dir, TreeNode node)
        {
           
             node.Nodes.Clear();
             try
             {

                 if (!Directory.GetAccessControl(dir.FullName).AreAccessRulesProtected)
                 {
                     DirectoryInfo[] dirs = dir.GetDirectories(); //得到当前目录下的子目录集
                     FileInfo[] files = dir.GetFiles();//得到当前目录下的文件集合

                     foreach (DirectoryInfo d in dirs)
                     {
                         TreeNode temp = new TreeNode(d.Name);
                         temp.ImageIndex = 2;
                         temp.SelectedImageIndex = 3;
                         AddNode(d, temp);   //递归循环创建每一级菜单
                         node.Nodes.Add(temp);
                     }

                     foreach (FileInfo file in files)
                     {

                         TreeNode tempFile = new TreeNode(file.Name);
                         if (file.Extension == ".exe" || file.Extension == "")   //程序文件或无扩展名
                         {

                             Icon fileIcon = GetSystemIcon.GetIconByFileName(file.FullName);
                             imageList1.Images.Add(file.Name, fileIcon);
                             tempFile.ImageKey = file.Name;

                         }
                         else    //其它文件
                         {
                             if (!imageList1.Images.ContainsKey(file.Extension))  //ImageList中不存在此类图标
                             {
                                 Icon fileIcon = GetSystemIcon.GetIconByFileName(file.FullName);
                                 imageList1.Images.Add(file.Extension, fileIcon);

                             }
                             tempFile.ImageKey = file.Extension;
                         }

                         node.Nodes.Add(tempFile);
                     }
                 }
             }
            catch
            {
            }
               
          
               

           
        
         }

        private void UserControl_Load(object sender, EventArgs e)
        {
           
          
           
             //DriveInfo[] drivers = DriveInfo.GetDrives();
             //foreach (DriveInfo dr in drivers)
             //{D:/个人/Solution1/WindowsFormsApplication1/GetSystemIcon.cs
             //    comboBox1.Items.Add(dr.Name);
             //}
             //comboBox1.SelectedIndex= 0;
             //CreateTree(comboBox1.Text);
           
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            CreateTree(comboBox1.Text);
        }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值