使用TreeView和listView控件查看本机磁盘文件夹及文件(WinForm)
使用TreeView和listView控件查看本机磁盘文件夹及文件 在页面上放TreeView,listView,splitter,imageList 四个控件,在imageList中添加两个小图片,然后设置一下 treeview控件的checkboxex=true,Dock=left,ImageList=ImageList1(控件名)ImageIndex=1,SelectedImageIndex=0(这两个属性的值是根据你的ImageList控件添加的图片的索引决定的), showLines=false; | |
代码如下: |
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
namespace NODE
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TreeView treeView1;
private System.Windows.Forms.ImageList imageList1;
private System.Windows.Forms.Splitter splitter1;
private System.Windows.Forms.ListView listView1;
private System.ComponentModel.IContainer components;
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
Windows 窗体设计器生成的代码
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
string[]drives=Directory.GetLogicalDrives();//得到本机上的驱动器
foreach(string drive in drives)//循环
{
MyNode mn=new MyNode(drive,true);
this.treeView1.Nodes.Add(mn);//添加驱动器名到TREEVIEW控件上
}
this.listView1.Columns.Add("名称",this.listView1.Width/4,HorizontalAlignment.Center);
this.listView1.Columns.Add("大小",this.listView1.Width/4,HorizontalAlignment.Center);
this.listView1.Columns.Add("类型",this.listView1.Width/4,HorizontalAlignment.Center);
this.listView1.Columns.Add("修改时间",this.listView1.Width/4,HorizontalAlignment.Center);
this.listView1.View=View.Details;
}
private void treeView1_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)//TreeView选中之后
{
try
{
MyNode mn=(MyNode)e.Node;
if(mn.isLoadFiles==false && mn.Nodes.Count==0 )
{
DirectoryInfo di=new DirectoryInfo(mn.MyPath);
this.listView1.Items.Clear();
foreach(DirectoryInfo d in di.GetDirectories())//如果为文件夹
{
mn.Nodes.Add(new MyNode(d.FullName,false));
ListViewItem lvi =this.listView1.Items.Add(d.Name);
lvi.SubItems.Add("");
lvi.SubItems.Add("文件夹");
lvi.SubItems.Add(d.LastAccessTime.ToString());
lvi.ImageIndex=1;//设置图标
}
foreach(FileInfo f in di.GetFiles())//如果为文件
{
ListViewItem lvi=this.listView1.Items.Add(f.Name,0);//加载文件名及图标
lvi.SubItems.Add(f.Length.ToString());
lvi.SubItems.Add("文件");
lvi.SubItems.Add(f.LastAccessTime.ToString());
}
}
}
catch
{
}
}
private void treeView1_AfterCheck(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
// TreeNode tnx=e.Node;//获取选中的树节点
// foreach(TreeNode t in tnx.Nodes)//循环这个节点下的子节点
// {
// t.Checked=e.Node.Checked;//选中所有的子节点
// }
//上下两段代码可以任选其一测试
bool isChecked=true;//定义一个BOOL值
TreeNode parentNode=e.Node.Parent;//得到当前选中的节点的父节点
if(parentNode==null)//如果没有父节点 则返回
return;
TreeNode tn=parentNode.FirstNode;//得到父节点的的一个节点
while(tn!=null)//如果不为空
{
if(tn.Checked==false)//如果此节点没有选中
{
isChecked=false;//BOOL为FALSE
break;//跳出
}
tn=tn.NextNode;//移至下一个节点
}
parentNode.Checked=isChecked;//根据BOOL值判断父节点是否选中
}
}
public class MyNode:TreeNode//一个继承TreeNode的类
{
private string mytext=null;
public bool isLoadFiles=false;
public MyNode(string text,bool isRoot)
{
mytext=text;
if(isRoot)//这里执行是查找本机驱动器的时候执行
{
base.Text=text.Substring(0,text.LastIndexOf("\\")-1);
}
else//这里执行是查找本机文件夹以及文件的时候执行
{
base.Text=text.Substring(text.LastIndexOf("\\")+1);
}
}
public string MyPath
{
get
{
return mytext;
}
}
}
}
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
namespace NODE
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TreeView treeView1;
private System.Windows.Forms.ImageList imageList1;
private System.Windows.Forms.Splitter splitter1;
private System.Windows.Forms.ListView listView1;
private System.ComponentModel.IContainer components;
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
Windows 窗体设计器生成的代码
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Load(object sender, System.EventArgs e)
{
string[]drives=Directory.GetLogicalDrives();//得到本机上的驱动器
foreach(string drive in drives)//循环
{
MyNode mn=new MyNode(drive,true);
this.treeView1.Nodes.Add(mn);//添加驱动器名到TREEVIEW控件上
}
this.listView1.Columns.Add("名称",this.listView1.Width/4,HorizontalAlignment.Center);
this.listView1.Columns.Add("大小",this.listView1.Width/4,HorizontalAlignment.Center);
this.listView1.Columns.Add("类型",this.listView1.Width/4,HorizontalAlignment.Center);
this.listView1.Columns.Add("修改时间",this.listView1.Width/4,HorizontalAlignment.Center);
this.listView1.View=View.Details;
}
private void treeView1_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)//TreeView选中之后
{
try
{
MyNode mn=(MyNode)e.Node;
if(mn.isLoadFiles==false && mn.Nodes.Count==0 )
{
DirectoryInfo di=new DirectoryInfo(mn.MyPath);
this.listView1.Items.Clear();
foreach(DirectoryInfo d in di.GetDirectories())//如果为文件夹
{
mn.Nodes.Add(new MyNode(d.FullName,false));
ListViewItem lvi =this.listView1.Items.Add(d.Name);
lvi.SubItems.Add("");
lvi.SubItems.Add("文件夹");
lvi.SubItems.Add(d.LastAccessTime.ToString());
lvi.ImageIndex=1;//设置图标
}
foreach(FileInfo f in di.GetFiles())//如果为文件
{
ListViewItem lvi=this.listView1.Items.Add(f.Name,0);//加载文件名及图标
lvi.SubItems.Add(f.Length.ToString());
lvi.SubItems.Add("文件");
lvi.SubItems.Add(f.LastAccessTime.ToString());
}
}
}
catch
{
}
}
private void treeView1_AfterCheck(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
// TreeNode tnx=e.Node;//获取选中的树节点
// foreach(TreeNode t in tnx.Nodes)//循环这个节点下的子节点
// {
// t.Checked=e.Node.Checked;//选中所有的子节点
// }
//上下两段代码可以任选其一测试
bool isChecked=true;//定义一个BOOL值
TreeNode parentNode=e.Node.Parent;//得到当前选中的节点的父节点
if(parentNode==null)//如果没有父节点 则返回
return;
TreeNode tn=parentNode.FirstNode;//得到父节点的的一个节点
while(tn!=null)//如果不为空
{
if(tn.Checked==false)//如果此节点没有选中
{
isChecked=false;//BOOL为FALSE
break;//跳出
}
tn=tn.NextNode;//移至下一个节点
}
parentNode.Checked=isChecked;//根据BOOL值判断父节点是否选中
}
}
public class MyNode:TreeNode//一个继承TreeNode的类
{
private string mytext=null;
public bool isLoadFiles=false;
public MyNode(string text,bool isRoot)
{
mytext=text;
if(isRoot)//这里执行是查找本机驱动器的时候执行
{
base.Text=text.Substring(0,text.LastIndexOf("\\")-1);
}
else//这里执行是查找本机文件夹以及文件的时候执行
{
base.Text=text.Substring(text.LastIndexOf("\\")+1);
}
}
public string MyPath
{
get
{
return mytext;
}
}
}
}
posted on 2005-11-23 12:55 2017_LIVE 阅读(1363) 评论(0) 编辑 收藏 举报