将系统上的所有目录填充到树视图中

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

/// <summary>

/// 填充目录文件到树视图

/// 1.获取系统上的所有逻辑驱动器

/// 2.在每个逻辑驱动器上获取驱动器顶级目录列表,并遍历子目录

///注:本程序参考《C#程序设计》

/// </summary>

/// <param name="tvw"></param>

/// <param name="isSource"></param>

private void FillDirectoryTree(TreeView tvw,bool isSource)

{

tvw.Nodes.Clear();

//获取系统上的所有逻辑驱动器

string[] strDrives=Environment.GetLogicalDrives();

foreach(string rootDirectoryName in strDrives)

{

//if(rootDirectoryName !=@"E:")

// continue;

try

{

//获取驱动器顶级目录列表

DirectoryInfo dir=new DirectoryInfo(rootDirectoryName);

dir.GetDirectories();

TreeNode ndRoot=new TreeNode(rootDirectoryName);

tvw.Nodes.Add(ndRoot);

if(isSource)

{

GetSubDirectoryNodes(ndRoot,ndRoot.Text,true);

}

else

{

GetSubDirectoryNodes(ndRoot,ndRoot.Text,false);

}

}

catch(Exception e)

{

MessageBox.Show(e.Message);

}

}

}

//遍历子目录

private void GetSubDirectoryNodes(TreeNode parentNode,string fullName,bool getFileNames)

{

DirectoryInfo dir = new DirectoryInfo(fullName);

DirectoryInfo[] dirSubs=dir.GetDirectories();

//为每一个子目录添加一个子接点

foreach(DirectoryInfo dirSub in dirSubs)

{

//不显示隐藏文件夹

if((dirSub.Attributes&FileAttributes.Hidden)!=0)

{

continue;

}

TreeNode subNode=new TreeNode(dirSub.Name);

parentNode.Nodes.Add(subNode);

//递归调用GetSubDirectoryNodes

GetSubDirectoryNodes(subNode,dirSub.FullName,getFileNames);

}

//获取目录中的文件

if(getFileNames)

{

FileInfo[] files=dir.GetFiles();

foreach(FileInfo file in files)

{

TreeNode fileNode=new TreeNode(file.Name);

parentNode.Nodes.Add(fileNode);

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有