using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
namespace ch3_4
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//初始化TreeView的根节点
InitialTreeView();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
private void InitialTreeView()
{
//将驱动器字符串数组设为空
string[] drivers=null;
//检索此计算机上逻辑驱动器的名称
drivers=Directory.GetLogicalDrives();
int i=0;
//初始化每一个逻辑驱动器
while ( i<drivers.GetLength(0))
{
this.treeView1.Nodes.Add(new TreeNode(drivers[i],1,1));
string path=drivers[i];
string[] dirs=null;
try
{
//获得指定驱动器中第一级目录的名称
dirs=Directory.GetDirectories(path);
}
catch(Exception error)
{
//错误处理为空,即忽略
}
if (dirs!=null)
{
//为每一个代表驱动器的根节点添加子节点
for (int j=0;j<dirs.Length;j++)
{
//获得节点的去掉路径后的目录名
TreeNode node = new TreeNode(dirs[j].ToString().Substring(dirs[j].ToString().LastIndexOf(" \\")+1));
//设置不选定状态下的图标
node.ImageIndex =2;
//设置打开状态下的图标
node.SelectedImageIndex =0;
//添加节点
this.treeView1.Nodes[i].Nodes.Add(node);
}
}
//继续下一个循环
i++;
}
}
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void treeView1_BeforeExpand(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
{
//获取发出信息的节点
TreeNode node=e.Node;
//设置它为treeView的当前节点
this.treeView1.SelectedNode=node;
string path=node.FullPath;
string[] dirs=null;
try
{
//获得当前节点所有的子节点
dirs=Directory.GetDirectories(path);
}
catch(Exception error)
{
//错误处理为空,即忽略
}
if (dirs!=null)
{
//为每一个当前节点的字节点添加子节点
for (int j=0;j<dirs.Length;j++)
{
//如果当前节点的子节点数为0,则为它添加子节点
//否则说明已经添加过或则没有子目录
if (node.Nodes[j].Nodes.Count==0)
{
//调用函数为子节点添加子节点
addDirectroy(node.Nodes[j],dirs[j]);
}
}
}
}
private void addDirectroy(TreeNode node,string path)
{
string[] dirs=null;
try
{
dirs=Directory.GetDirectories(path);
}
catch(Exception e)
{
//错误处理为空,即忽略
}
if(dirs!=null)
{
for (int j=0;j<dirs.Length;j++)
{
//添加新的子节点
TreeNode nodeNew= new TreeNode(dirs[j].ToString().Substring(dirs[j].ToString().LastIndexOf(" \\")+1));
//设置不选定状态下的图标
nodeNew.ImageIndex =2;
//设置打开状态下的图标
nodeNew.SelectedImageIndex =0;
node.Nodes.Add(nodeNew);
}
}
}
private void checkBox1_CheckedChanged(object sender, System.EventArgs e)
{
this.treeView1.Sorted = this.checkBox1.Checked;
}
private void checkBox2_CheckedChanged(object sender, System.EventArgs e)
{
this.treeView1.ShowLines=this.checkBox2.Checked;
}
private void checkBox3_CheckedChanged(object sender, System.EventArgs e)
{
this.treeView1.ShowRootLines=this.checkBox3.Checked;
}
private void checkBox4_CheckedChanged(object sender, System.EventArgs e)
{
this.treeView1.CheckBoxes=this.checkBox4.Checked;
}
private void checkBox5_CheckedChanged(object sender, System.EventArgs e)
{
this.treeView1.ShowPlusMinus=this.checkBox5.Checked;
}
private void checkBox6_CheckedChanged(object sender, System.EventArgs e)
{
this.treeView1.HideSelection=this.checkBox6.Checked;
}
private void checkBox7_CheckedChanged(object sender, System.EventArgs e)
{
this.treeView1.HotTracking=this.checkBox7.Checked;
}
}
}