본문 바로가기

Programing (프로그래밍)/WPF & C# (C Sharp)

WPF & C# - 폴더트리 코드 소스 ( FolderTree / TreeView / 재귀함수 / 루프 / roop )

728x90
반응형
 WPF & C# - 폴더트리 코드 소스 ( FolderTree / TreeView / 재귀함수 / 루프 / roop )

 

FolderTree.zip
0.29MB

 

 

 

MainWindow.xaml.cs

 

 
1
<TreeView x:Name="_TreeView"/>
cs
 

 

 

 

 

MainWindow.xaml.cs

 

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
private void Window_Loaded(object sender, RoutedEventArgs e)
{
    // foreach (string str in Directory.GetDirectories(""))   // 특정폴더
    foreach (string str in Directory.GetLogicalDrives())   // 루트폴더
    {
        try
        {
            TreeViewItem item = new TreeViewItem();
            item.Header = str;
            item.Tag = str;
            item.Expanded += new RoutedEventHandler(item_Expanded);   // 노드 확장시 추가
 
            _TreeView.Items.Add(item);
            GetSubDirectories(item);
        }
 
        catch (Exception except)
        {
            // MessageBox.Show(except.Message);   // 접근 거부 폴더로 인해 주석처리
        }
    }
}
 
// 서브 디렉토리
private void GetSubDirectories(TreeViewItem itemParent)
{
    if (itemParent == nullreturn;
    if (itemParent.Items.Count != 0return;
 
    try
    {
        string strPath = itemParent.Tag as string;
        DirectoryInfo dInfoParent = new DirectoryInfo(strPath);
        foreach (DirectoryInfo dInfo in dInfoParent.GetDirectories())
        {
            TreeViewItem item = new TreeViewItem();
            item.Header = dInfo.Name;
            item.Tag = dInfo.FullName;
            item.Expanded += new RoutedEventHandler(item_Expanded);
            itemParent.Items.Add(item);
        }
    }
 
    catch (Exception except)
    {
        // MessageBox.Show(except.Message);   // 접근 거부 폴더로 인해 주석처리
    }
}
 
// 트리확장시 내용 추가
void item_Expanded(object sender, RoutedEventArgs e)
{
    TreeViewItem itemParent = sender as TreeViewItem;
    if (itemParent == nullreturn;
    if (itemParent.Items.Count == 0return;
    foreach (TreeViewItem item in itemParent.Items)
    {
        GetSubDirectories(item);
    }
}
cs
 

 

 

원문출처 : http://inasie.tistory.com/19

 

너무 잘 만들어 놓아서 사실 따로 정리할게 없다.

넘넘 감사합니다^^

 

 

728x90
반응형