100分 关于treeview生成类似资源管理器形势的目录树 如何建立一个treeview。让它显示一个指定目录下所有层次的子目录和文件。即类似资源管理器的样子。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 递归读文件加载节点呗Directory.GetXXX http://www.cnblogs.com/sxg1010/archive/2006/07/28/462420.htmlhttp://www.cnblogs.com/yuyijq/archive/2005/08/04/207210.html 原来在codeproject里面找到一个 http://www.codeproject.com/cs/miscctrl/FileBrowser.asp一个强人写好的控件,直接拖过来就可以用 http://www.codeproject.com/useritems/TreeViewFileExplorer.asphttp://www.codeproject.com/csharp/tv-lv-basic41.asp ===============================================================/// <summary> /// 向树图添加盘符 /// </summary> private void FilltvwDirectory() { //获取当前设备 盘符,并添加到数组 drivers[i] 里面 string[] drives = Environment.GetLogicalDrives(); for (int i = 0; i < drives.Length; i++) { TreeNode cRoot = new TreeNode(drives[i]); //TreeNode cRoot = new TreeNode(); //cRoot.Text = drives[i]; treeView1.Nodes.Add(cRoot); AddDirectories(cRoot); } } /// <summary> /// 创建方法,添加盘符下的文件夹 /// </summary> /// <param name="node"></param> private void AddDirectories(TreeNode node) { try { // 获取当前节点路径\ DirectoryInfo dir = new DirectoryInfo(GetPathFormNode(node)); // 获取当前节点所在的路径下的子文件夹 DirectoryInfo[] e = dir.GetDirectories(); for (int i = 0; i < e.Length; i++) { string name = e[i].Name; //判断是否是上级目录 if (!name.Equals(".") && !name.Equals("..")) { node.Nodes.Add(new TreeNode(name)); } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } /// <summary> /// 获取节点的路径 /// </summary> /// <param name="node"></param> /// <returns></returns> private string GetPathFormNode(TreeNode node) { if (node.Parent == null) { return node.Text; } return Path.Combine(GetPathFormNode(node.Parent),node.Text); //递归调用产生节点对应文件夹的路径 // Path.Combine 组合产生路径,如 Path.combine("A","B") 侧生成 "A\\B" } 接上 private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e) { TreeNode nodeExpanding =(TreeNode)e.Node; AddSubDirectores(nodeExpanding); } /// <summary> /// 调用 /// </summary> /// <param name="node"></param> private void AddSubDirectores(TreeNode node) { for (int i = 0; i < node.Nodes.Count; i++) { AddDirectories(node.Nodes[i]); } } ===========如果你运行 代码报错的话... 电脑 存在 g: DVD 驱动器 之类的....你只要 绑定的时候设置一下就可以了 // 如果你得盘符 存在 像 G DVD 驱动盘,就要注意了.否则会报错的... if (cRoot.Text != "G:\\") { AddDirectories(cRoot); } 请教一个简单的http协议制定 怎么发布C# ActiveX控件 怎么向GataGridView控件添加数据 [C#] 关于 DataGridView的显示 事务顺序问题.... 高手指点一下..谢谢~~ 为什么有时候只执行 insert into 语句 C#中如何批量修给DataGridView中的数据 关于xml删除问题 一个变量的问题 如何将2幅jpg图象合并成一个jpg文件? access数据库向sql server导入问题 panel控件的问题 帮忙想想---关于脚本操作数据库的问题
Directory.GetXXX
http://www.cnblogs.com/yuyijq/archive/2005/08/04/207210.html
http://www.codeproject.com/csharp/tv-lv-basic41.asp
/// <summary>
/// 向树图添加盘符
/// </summary>
private void FilltvwDirectory()
{
//获取当前设备 盘符,并添加到数组 drivers[i] 里面
string[] drives = Environment.GetLogicalDrives();
for (int i = 0; i < drives.Length; i++)
{
TreeNode cRoot = new TreeNode(drives[i]);
//TreeNode cRoot = new TreeNode();
//cRoot.Text = drives[i];
treeView1.Nodes.Add(cRoot);
AddDirectories(cRoot);
}
}
/// <summary>
/// 创建方法,添加盘符下的文件夹
/// </summary>
/// <param name="node"></param>
private void AddDirectories(TreeNode node)
{
try
{
// 获取当前节点路径\
DirectoryInfo dir = new DirectoryInfo(GetPathFormNode(node));
// 获取当前节点所在的路径下的子文件夹
DirectoryInfo[] e = dir.GetDirectories(); for (int i = 0; i < e.Length; i++)
{
string name = e[i].Name;
//判断是否是上级目录
if (!name.Equals(".") && !name.Equals(".."))
{
node.Nodes.Add(new TreeNode(name));
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
/// <summary>
/// 获取节点的路径
/// </summary>
/// <param name="node"></param>
/// <returns></returns>
private string GetPathFormNode(TreeNode node)
{
if (node.Parent == null)
{
return node.Text;
}
return Path.Combine(GetPathFormNode(node.Parent),node.Text);
//递归调用产生节点对应文件夹的路径
// Path.Combine 组合产生路径,如 Path.combine("A","B") 侧生成 "A\\B" }
private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
TreeNode nodeExpanding =(TreeNode)e.Node;
AddSubDirectores(nodeExpanding);
}
/// <summary>
/// 调用
/// </summary>
/// <param name="node"></param>
private void AddSubDirectores(TreeNode node)
{
for (int i = 0; i < node.Nodes.Count; i++)
{
AddDirectories(node.Nodes[i]);
}
}
电脑 存在 g: DVD 驱动器 之类的....你只要 绑定的时候设置一下
就可以了
// 如果你得盘符 存在 像 G DVD 驱动盘,就要注意了.否则会报错的...
if (cRoot.Text != "G:\\")
{
AddDirectories(cRoot);
}