gpt4 book ai didi

c# - 通过获取文件路径来排列 TreeView?

转载 作者:太空宇宙 更新时间:2023-11-03 14:15:51 27 4
gpt4 key购买 nike

我有这个代码:

    public void AddNode(string Node)
{
try
{
treeView.Nodes.Add(Node);
treeView.Refresh();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}

如您所见,非常简单,此方法获取文件路径。像 C:\Windows\notepad.exe

现在我想让 TreeView 像文件系统一样显示它。

-C:\
+Windows

如果我点击“+”,它会变成这样:

-C:\
-Windows
notepad.exe

这是我现在通过将这些路径发送到上述方法得到的结果:

TreeView current look

我该怎么做才能安排节点?

最佳答案

如果我是你,我会使用 string.Split 将输入字符串拆分为子字符串方法,然后搜索正确的节点以插入节点的相关部分。我的意思是,在添加节点之前,您应该检查节点 C:\及其子节点 (Windows) 是否存在。

这是我的代码:

...
AddString(@"C:\Windows\Notepad.exe");
AddString(@"C:\Windows\TestFolder\test.exe");
AddString(@"C:\Program Files");
AddString(@"C:\Program Files\Microsoft");
AddString(@"C:\test.exe");
...

private void AddString(string name) {
string[] names = name.Split(new char[] { '\\' }, StringSplitOptions.RemoveEmptyEntries);
TreeNode node = null;
for(int i = 0; i < names.Length; i++) {
TreeNodeCollection nodes = node == null? treeView1.Nodes: node.Nodes;
node = FindNode(nodes, names[i]);
if(node == null)
node = nodes.Add(names[i]);
}
}

private TreeNode FindNode(TreeNodeCollection nodes, string p) {
for(int i = 0; i < nodes.Count; i++)
if(nodes[i].Text.ToLower(CultureInfo.CurrentCulture) == p.ToLower(CultureInfo.CurrentCulture))
return nodes[i];
return null;
}

关于c# - 通过获取文件路径来排列 TreeView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6601219/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com