求TreeView绑定任意路径的方法

cosmicking 2006-09-12 09:01:26
我想用TreeView来绑定任意路径,但不知道如何加载子节点,循环读出来的目录和文件都显示在根节点中。忘高手指点迷津!
...全文
311 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cosmicking 2006-09-13
  • 打赏
  • 举报
回复
解决啦,我在treeView的beforeExpand事件里写的,判断当前节点是否是目录,然后继续向下展开!
lovvver 2006-09-12
  • 打赏
  • 举报
回复
不会慢,关键看你的目录下的文件夹以及文件有多少,如果上万的话,那肯定会慢了,就是你手动在资源管理器中打开都会比较慢。
cosmicking 2006-09-12
  • 打赏
  • 举报
回复
用递归的话,程序运行起来会不会很慢啊?
cosmicking 2006-09-12
  • 打赏
  • 举报
回复
geoffe(),你用的2003还是2005。我怎么调不过去呢!有些属性我的2003里没有!
GXY2005 2006-09-12
  • 打赏
  • 举报
回复
递归算法
geoffe 2006-09-12
  • 打赏
  • 举报
回复
比如绑定我的电脑
那你用一个循环就可以了
根极点是硬盘,子节点是相应的文件夹
private void FillTree()
{
this.treeview1.Nodes.Clear();
TreeNode RootNode = new TreeNode(openDialog1.fileName)


TreeNode DriveNode;

string[] strDrivers = Environment.GetLogicalDrives();
foreach (string DriverName in strDrivers)
{

DriveNode = new TreeNode(DriverName);
DriveNode.Name = "" + DriverName;
DriveNode.Tag = false;
if (CheckISSubFolder(DriverName))
{
TreeNode tmpnode = new TreeNode("tmp");
DriveNode.Nodes.Add(tmpnode);
}
RootNode.Nodes.Add(DriveNode);
}

if (RootNode.Nodes.Count > 0)
RootNode.Expand();

this.sysTreeView.Nodes.Add(RootNode);
}

private bool CheckISSubFolder(string Path)
{
DirectoryInfo dir = new DirectoryInfo(Path);
if (!dir.Exists)
{
return false;
}
else
{
DirectoryInfo[] subDirs = dir.GetDirectories();
int i = 0;
foreach (DirectoryInfo subDir in subDirs)
{
if ((subDir.Attributes & FileAttributes.Hidden) != 0)
{
continue;
}
else
{
if (++i > 0)
return true;
}
}
return false;
}

}

private void GetSubDirectory(TreeNode ParentNode, string Path)
{
try
{
DirectoryInfo dir = new DirectoryInfo(Path);
DirectoryInfo[] subDirs = dir.GetDirectories();
TreeNode SubNode;

ParentNode.Nodes.RemoveAt(0);
foreach (DirectoryInfo subDir in subDirs)
{
if ((subDir.Attributes & FileAttributes.Hidden) != 0)
continue;

SubNode = new TreeNode(subDir.Name);
SubNode.Name = subDir.FullName;
SubNode.Tag = false;
if (CheckISSubFolder(subDir.FullName))
{
TreeNode tmpnode = new TreeNode("tmp");
SubNode.Nodes.Add(tmpnode);
}
ParentNode.ImageIndex = 1;
ParentNode.SelectedImageIndex = 0;
ParentNode.Nodes.Add(SubNode);
}
}
catch { }
}
cosmicking 2006-09-12
  • 打赏
  • 举报
回复
自己再顶一下!
cosmicking 2006-09-12
  • 打赏
  • 举报
回复
我会搜索所有文件,可不知道怎么把它按文件夹的路径加到treeView里,生成树状结构!
cosmicking 2006-09-12
  • 打赏
  • 举报
回复
我是在winform下用的,有没有简单点的,给我点算法的提示就行!
fds2003 2006-09-12
  • 打赏
  • 举报
回复
http://www.cnblogs.com/Bolik/archive/2006/09/11/501141.html

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧