2010-06-08 2 views

답변

4

뭔가 :. 당신은 예를 들어 BindDirectoryToTreeView("c:\");를 호출하여 코드를 호출 할

public void BindDirectoryToTreeView(string directoryPathToBind) 
    { 
     TreeNode rootNode = new TreeNode(); 
     treeView1.Nodes.Add(rootNode); 
     RecurseFolders(directoryPathToBind, rootNode); 
    } 

    public void RecurseFolders(string path, TreeNode node) 
    { 
     var dir = new DirectoryInfo(path); 
     node.Text = dir.Name; 

     try 
     { 
      foreach (var subdir in dir.GetDirectories()) 
      { 
       var childnode = new TreeNode(); 
       node.Nodes.Add(childnode); 

       RecurseFolders(subdir.FullName, childnode); 
      } 
     } 
     catch (UnauthorizedAccessException ex) 
     { 
      // TODO: write some handler to log and/or deal with 
      // unauthorized exception cases 
     } 

     foreach (var fi in dir.GetFiles().OrderBy(c=>c.Name)) 
     { 
      var fileNode = new TreeNode(fi.Name); 
      node.Nodes.Add(fileNode); 
     } 
    } 

주 당신이해야

+0

어디에서 BindDirectorytoTreeView를 호출하여 디렉토리 계층 구조를 표시해야합니까? – jpavlov

+0

양식 작성시 즉시 바인드하려면 양식의 생성자에 넣으십시오. 그렇지 않으면 단추 누르기 등으로 바인딩 할 수 있습니다. 모든 양식 이벤트에서 호출 할 수 있도록 메서드를 열어 둡니다. – code4life

+0

감사합니다. 난 그냥이 시도하고 좋은 작품, 비록 내 드라이브에서 모든 폴더를 당기지 않습니다, 나는 주위에 놀고 내가 알아낼 수 있는지 확인합니다. 다시 한번 감사드립니다. – jpavlov

0
당신은 트 리뷰에 표시 할하지만 다음과 같은 접근 방식은

공공 정적 무효 LoadDir (TreeNode를의 t,의 DirectoryInfo의 d)를 {작업 할 수 정확하게 냈어 있는지 간단한 재귀를 사용할 수 있습니다

의 TreeNode TN = 새로운 TreeNode (d.name);

t.ChildNodes.Add (tn);

의 foreach (의 DirectoryInfo d.GetDirectories에서의 DN())

LoadDir (TN, DN); }

당신은

의 TreeNode 테네시 = 새 TreeNode를 ("루트")로 호출 할 수 있습니다;

TreeView1.Nodes.Add (tn);

LoadDir (TN, @ 새의 DirectoryInfo ("C : 오라클 \");이 같은

+0

최종 사용자가 특정 파일이나 폴더를 선택하면 불리언 형식으로 다른 위치로 그 파일을 복제 할 수 있으므로 선택 가능한 트리 뷰에 표시하고 있습니다. 다른 방법을 제안합니까? – jpavlov

관련 문제