功能實現(模擬資源管理器左邊的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));//綁定下級節點
}
}
}
}