【问题标题】:Avoiding root Node in Populating TreeView with a List of File Paths在使用文件路径列表填充 TreeView 时避免根节点
【发布时间】:2015-10-03 19:27:22
【问题描述】:
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?我不需要使用此函数创建的任何额外根节点。

【问题讨论】:

    标签: c# treeview


    【解决方案1】:

    我假设您在某个时候将该 TreeNode 放入 TreeView 中,如下所示:

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

    您可以添加其所有子节点,而不是添加该根节点,如下所示:

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

    虽然这不是很漂亮。如果您将 TreeView 作为参数并直接填充它,或者您将返回一个节点列表,那就更好了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-03
      • 2019-07-24
      • 2023-03-21
      • 1970-01-01
      • 2015-05-13
      • 1970-01-01
      相关资源
      最近更新 更多