您的位置:首页 > 其它

winform中利用Treeview模仿资源管理器实现图片文件列表

2010-04-27 16:46 204 查看
功能实现(模拟资源管理器左边的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));//绑定下级节点

}

}



}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐