2015-06-20 62 views
1

我想将目录结构加载到TreeView中。如果文件夹中有一个txt文件,它必须中断。子文件夹和文件不应显示。请帮我找到一个算法如何将文件夹结构加载到treeview中?

private void ListDirectory(TreeView treeView, string path) 
{ 
    treeView.Nodes.Clear(); 
    var rootDirectoryInfo = new DirectoryInfo(path); 
    treeView.Nodes.Add(CreateDirectoryNode(rootDirectoryInfo)); 
} 

private static TreeNode CreateDirectoryNode(DirectoryInfo directoryInfo) 
{ 
    var directoryNode = new TreeNode(directoryInfo.Name); 
    foreach (var directory in directoryInfo.GetDirectories()) 
    { 
     if (directory.Name.EndsWith("txt")) 
     { 
      break; 
     } 
     else 
     { 
      directoryNode.Nodes.Add(CreateDirectoryNode(directory)); 
     } 
    } 

    foreach (var file in directoryInfo.GetFiles()) 
    { 
     if (directoryNode.Name.EndsWith("txt")) 
     { 
      directoryNode.Nodes.Add(new TreeNode(file.Name)); 
     } 
    } 

    return directoryNode; 
} 
+0

究竟什么是你的问题?你通常会想要一个递归解决方案。 (另外:我建议使用Path.GetExtension而不是EndsWith。) – TaW

+0

如果在父文件夹中有一个txt文件应该不显示子文件夹和文件 –

+0

“如果有是文件夹中的一个txt文件,它必须中断“ - 这是什么意思?你想实现什么? –

回答

0

我解决了它这样,

private static TreeNode CreateDirectoryNode(DirectoryInfo directoryInfo) 
     { 
      var directoryNode = new TreeNode(directoryInfo.Name); 

      try 
      { 
       int flag = 0; 

       foreach (var file in directoryInfo.GetFiles()) 
       { 
        if (file.Name.EndsWith("txt")) 
        { 
         flag = 1; 

        } 
       } 
       if (flag == 0) 
       { 
        foreach (var directory in directoryInfo.GetDirectories()) 
        { 

         directoryNode.Nodes.Add(CreateDirectoryNode(directory)); 
        } 
       } 

       return directoryNode; 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
       return null; 
      } 
     } 
+0

首先,我们不知道你解决了什么问题,因为你原来的问题还不够清楚。 –