2014-05-23 3 views
0

이 링크를 사용하여 How to display directories in a TreeView? "Buildtree"메소드를 사용하여 treeview에 디렉토리를 추가 할 수있었습니다. 이제 내 다음 단계는 복잡합니다. 내가 추가 한 디렉토리에는 여러 개의 하위 디렉토리가 있으며 각 디렉토리에는 건물 날짜가 포함 된 파일이 있습니다.두 번째 레벨 노드를 treeview의 디렉토리에 삽입하십시오. #

내가 지금해야 할 일은 내 프로그램의 트리 뷰에있는 하위 디렉토리와 파일의 이름 (예 : 140422)의 파일 날짜와 함께 다른 레벨의 노드를 추가해야하는 파일의 레벨 사이입니다. 이 날짜의 파일 (140422)은이 노드에서 폴드됩니다. (왜냐하면 나는 폴더에 수백 개의 파일을 갖게 될 것이므로 날짜에 따라 다른 상위 노드로 분류 할 것이다).

"Buildtree"방법을 수정해야하지만 어떻게해야할지 모르겠다. 어떤 도움이나 아이디어? 미리 감사드립니다

+1

디렉토리 구조를 전처리하는 것이 좋습니다. 따라서 이미 메모리에 의도 된 구조가 있고 그 다음 Treeview에 표시하면됩니다. (아직도 답변을위한 구체적으로 올려다) – Flater

답변

0

어쩌면이 같은, 내가 잘 문제를 이해하는 경우 : 당신은 기본적으로 이름과 날짜와 노드를 만든 다음 대신 노드에 파일에 해당하는 노드를 추가

private void BuildTree(DirectoryInfo directoryInfo, TreeNodeCollection addInMe) 
{ 
    TreeNode curNode = addInMe.Add(directoryInfo.Name); 

    foreach (FileInfo file in directoryInfo.GetFiles()) 
    { 
     string date = "getyourdatefrom_file"; 
     TreeNode dateNode = addInMe.Add(date); 
     curNode.Nodes.Add(dateNode); 
     dateNode.Nodes.Add(file.FullName, file.Name); 
    } 
    foreach (DirectoryInfo subdir in directoryInfo.GetDirectories()) 
    { 
     BuildTree(subdir, curNode.Nodes); 
    } 
} 

을 curNode의.

+0

답장을 보내 주셔서 대단히 감사합니다! 그게 정확히하고 싶어요! (그림을 첨부 할 수 없기 때문에 생각이 나기 때문에 기뻐요!) 그러나 불완전한 설명 때문에 각 하위 폴더의 파일이 수백 개 다른 날짜 (예 : 140422, 140423 ....)가 있고 날짜별로 정렬되어 있습니다 (140422의 처음 10 개 파일, 140423의 10 개 파일 ...) – jcraffael

+0

다음은이 파일을 반복하여 해당 날짜를 알 수 있음을 의미합니다 140422의 모든 파일이 노드 140422 아래에 있는지, 140423의 모든 파일이 노드 140423 아래에 있는지 등을 확인하십시오. 귀하의 솔루션이 각 파일에 대해 상위 레벨 노드 1 개를 생성하는 것으로 보입니다. 이는 내가 원하는 방식이 아닙니다. 이것에 대해 당신은 어떤 생각을 가지고 있습니까? 다시 고마워요 :) – jcraffael

+0

글쎄, 당신이 원하는 폴더를 만들 수 있지만, 질문의 요점은 파일을 정렬하는 방법을 검색하는 것이 아니라고 생각합니다 : P 당신이 그것에 대해 새로운 질문을하고 형식을 제공하는 것이 좋습니다 귀하의 파일 이름의 그래서 사람들이 당신에게 모든 것을 할 수있는 좋은 정규식을 얻을 수 있습니다. ** 파일 이름에서 다른 폴더의 이름을 얻는 방법 **이 코드는 [BuildTree 코드를 여기에 넣으십시오.] 파일 이름에있는 날짜로 "getyourdatefrom_file"을 어떻게 바꿀 수 있습니까? 형식이 "uselessstuff-DATE.txt"입니다. – Kilazur

관련 문제