winform中利用Treeview模仿資源管理器實現圖片文件列表

功能實現(模擬資源管理器左邊的treeview功能):

 

1.初始化時候加載"我的電腦"裏面的驅動器(包含移動介質),

2.當選擇驅動器時候,打開(摺疊)文件(夾)列表.並確定是否包含子文件(夾)

3.選擇文件(夾)時候,打開(摺疊)文件(夾)列表.並確定是否包含子文件(夾)

 

特點:

只加載需要目錄,並非一次性加載全部內容

 

=============================================

程序界面:treeview控件treeviewPhoto

============================================

 

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;
using System.Text.RegularExpressions;

namespace CarShow
{
    public partial class PhotoManage : Form
    {
        public PhotoManage()
        {
            InitializeComponent();
        }

        private void PhotoManage_Load(object sender, EventArgs e)
        {
           // statusLabel.Text = "程序製作:海風 mngzilin csdn   時間:2010-04-10";
            InitPhotoList();
        }
        void InitTree()
        {
            ImageList img = new ImageList();
            Image temp = Image.FromFile("ico//disk.png");

            img.Images.Add(new Bitmap(temp));
            temp.Dispose();
            temp = Image.FromFile("ico//folder.png");
            img.Images.Add(new Bitmap(temp));
            temp.Dispose();
            temp = Image.FromFile("ico//file.png");
            img.Images.Add(new Bitmap(temp));
            temp.Dispose();
            treeviewPhoto.ImageList = img;
            foreach (DriveInfo Dri in DriveInfo.GetDrives())
            {
                if (Dri.DriveType == DriveType.Fixed || Dri.DriveType == DriveType.Removable)
                {
                    TreeNode tn=treeviewPhoto.Nodes.Add(Dri.Name);
                    tn.ImageIndex =tn.SelectedImageIndex= 0;
                    BindNode(tn, Dri.RootDirectory);
                }
            }
        }
        void BindNode(TreeNode tn,DirectoryInfo di)//綁定節點
        {
            try
            {
                tn.Nodes.Clear();
                FileSystemInfo[] fsi = di.GetFileSystemInfos();
                foreach (FileSystemInfo fs in fsi)
                {
                    if (fs is DirectoryInfo)
                    {
                        TreeNode TN=tn.Nodes.Add((fs as DirectoryInfo).Name);
                        TN.ImageIndex =TN.SelectedImageIndex= 1;
                        if ((fs as DirectoryInfo).GetFileSystemInfos().GetEnumerator().MoveNext())//入過下級有內容
                            TN.Nodes.Add("Loading...");//綁定前顯示Loading字樣
                    }
                    if (fs is FileInfo && Regex.IsMatch((fs as FileInfo).Extension, ".bmp|.png|.jpg|.jpeg|.gif", RegexOptions.IgnoreCase))//如果是圖片
                    {
                        TreeNode TN = tn.Nodes.Add((fs as FileInfo).Name,(fs as FileInfo).Name);
                        TN.ImageIndex =TN.SelectedImageIndex= 2;
                    }
                }
            }
            catch { }
           
        }

        private void treeviewPhoto_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            if (e.Node.IsExpanded)//當點擊節點時候
            {
                BindNode(e.Node, new DirectoryInfo(e.Node.FullPath));//綁定下級節點
            } 
        }

 

    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章