用文件路径列表填充TreeView时避免根节点


public static TreeNode MakeTreeFromPaths(List<string> paths, string rootNodeName = "E:\", char separator = '\')
{
    var rootNode = new TreeNode(rootNodeName);
    foreach (var path in paths.Where(x => !string.IsNullOrEmpty(x.Trim())))
    {
        var currentNode = rootNode;
        var pathItems = path.Split(separator);
        foreach (var item in pathItems)
        {
            var tmp = currentNode.Nodes.Cast<TreeNode>().Where(x => x.Text.Equals(item));
            currentNode = tmp.Count() > 0 ? tmp.Single() : currentNode.Nodes.Add(item);
        }
    }
    return rootNode;
}

这个函数可以用给定的文件路径列表填充一个树视图。但是有一个问题,它将创建一个名为rootNodeName的根节点,然后将添加其他子节点。我如何避免给定rootNodeName?我不需要任何额外的根节点创建这个函数

我假设您在某个时候将TreeNode放入TreeView中,像这样:

treeView.Nodes.Add(MakeTreeFromPaths(pathList));

除了添加根节点,还可以添加它的所有子节点,如下所示:

foreach(var node in MakeTreeFromPaths(pathList).Nodes)
{
    treeView.Nodes.Add(node);
}

这不是很漂亮。如果您将TreeView作为参数并直接填充它,或者如果您将返回节点列表,则会更好。

最新更新