【问题标题】:Change name of currently added Node更改当前添加节点的名称
【发布时间】:2012-10-03 09:03:51
【问题描述】:

我希望更改为目录树的添加节点的名称。

 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

那我怎么改名字

【问题讨论】:

    标签: c# treeview nodes directoryservices treenode


    【解决方案1】:

    您可以将DirectoryInfo.Name 用于节点,它会为您提供没有完整路径的短名称(如果需要,您可以将FullName 存储在标签中)。像这样:

    var node = new TreeNode(dir.Name);
    

    【讨论】:

      【解决方案2】:

      线

      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;
      }
      

      【讨论】:

        【解决方案3】:

        您似乎想去掉最后一个 '\' 之前的所有内容,所以为什么不直接使用从最后一个 '\' 的索引到字符串末尾的子字符串函数。

        【讨论】:

          猜你喜欢
          • 2011-07-04
          • 2019-12-03
          • 2011-05-09
          • 2018-02-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-28
          • 1970-01-01
          相关资源
          最近更新 更多