我希望更改为目录树添加节点的名称。
private static TreeNode GetDirectoryNodes(string path)
{
var dir = new DirectoryInfo(path);
var node = new TreeNode(path);
//node.Nodes.Add("Windows");
foreach (var directory in dir.GetDirectories())
{
node.Nodes.Add(GetDirectoryNodes(path + "\\" +directory.ToString()));
}
return node;
}
这将产生类似
的输出C:\Test1
|
|-C:\Test1\Test1
| |-C:\Test1\Test1\Test1
|-C:\Test1\Test2
然而我想要展示
C:\Test1
|
|-Test1
| |-Test1
|-Test2
如果我使用
,我已经知道了foreach (var directory in dir.GetDirectories())
{
node.Nodes.Add(directory.ToString());
}
我将只提供添加路径名称,但不会为子目录输出重新驱动
C:\Test1
|
|-Test1
|-Test2
那么如何更改名称
答案 0 :(得分:1)
该行
var node = new TreeNode(path);
是设置每个节点的文本的位置(path
的值)。
将此更改为
var node = new TreeNode(path.Substring(path.LastIndexOf('\\') + 1));
更好的是,不要通过字符串执行此操作,而是通过传递DirectoryInfo
个对象。然后,您可以使用Name
属性:
private static TreeNode GetDirectoryNodes(DirectoryInfo dir)
{
var node = new TreeNode(dir.Name);
foreach (var childDir in dir.GetDirectories())
{
node.Nodes.Add(GetDirectoryNodes(childDir));
}
return node;
}
答案 1 :(得分:1)
您可以使用DirectoryInfo.Name
作为节点,它会为您提供没有完整路径的简短名称(如果需要,您可以在Tag中存储FullName
)。像这样:
var node = new TreeNode(dir.Name);
答案 2 :(得分:0)
好像你想在最后一个'\'之前删除所有内容,所以为什么不使用子串函数FROM最后一个'\'的索引到字符串的结尾。