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));//绑定下级节点
}
}
}
}
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));//绑定下级节点
}
}
}
}
相关文章推荐
- winform利用itextsharp.dll实现图片文件转换PDF格式文件
- Asp.net利用Treeview实现树形列表
- 利用Treeview实现树形列表
- 利用jQuery和css实现的模仿百度搜索列表页面的分页的足迹效果
- 利用Treeview实现树形列表
- Hybrid模式-利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)
- 用TreeView控件实现资源管理器(显示本地硬盘下所有文件夹和文件,并可以浏览图片)(示例代码下载)
- 【COCOS2DX-LUA 脚本开发之十二】Hybrid模式-利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)
- 利用HTML5的新特点实现图片文件异步上传
- Winform 三层架构例子(3)--利用资源文件实现多国语言(含源代码)
- 【COCOS2DX-LUA 脚本开发之十二】Hybrid模式-利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- 【COCOS2DX-LUA 脚本开发之十二】Hybrid模式-利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)
- 利用Selenium实现图片文件上传的两种方式
- 【COCOS2DX-LUA 脚本开发之十二】Hybrid模式-利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)
- Framework7中利用download和external实现a标签下载文件和图片
- Framework7中利用download和external实现a标签下载文件和图片
- 利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)
- 【COCOS2DX-LUA 脚本开发之十二】Hybrid模式-利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)
- 利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)