본문 바로가기
C# 기술

TreeView DirectoryInfo (TreeView 폴더 구조 보여주기)

by bryan.oh 2019. 1. 20.
반응형

TreeView C#

Visual Studio

Windows Form


TreeView 에 Directory node 를 표시하는 코드 입니다.


Windows Form 을 생성하고 TreeView 를 추가합니다.
1. Create FormTree.cs
2. Drag & Drop "TreeView" From Tools to Form


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        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())
                directoryNode.Nodes.Add(CreateDirectoryNode(directory));
            foreach (var file in directoryInfo.GetFiles())
                directoryNode.Nodes.Add(new TreeNode(file.Name));
            return directoryNode;
        }
cs

이 두 메소드만 있으면 됩니다.

DirectoryInfo 의 name 으로 node 를 생성하고 하위 디렉토리를 조회합니다. 


CreateDirectoryNode 는 recursive method 입니다. 메소드 안에서 자신의 메소드를 호출하고 있죠.

하위 폴더의 하위까지 계속해서 조회하도록 되어있습니다.


Form_Load 또는 OnClick Event 에서 호출해봅니다.

1
2
3
4
        private void FormTree_Load(object sender, EventArgs e)
        {
            ListDirectory(treeView1, @"C:\Users\vdo_doc\Documents\tistory");
        }
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
using System;
using System.IO;
using System.Windows.Forms;
 
namespace HelloWorldTest
{
    public partial class FormTree : Form
    {
        public FormTree()
        {
            InitializeComponent();
        }
 
        private void FormTree_Load(object sender, EventArgs e)
        {
            ListDirectory(treeView1, @"C:\Users\vdo_doc\Documents\tistory");
        }
 
        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())
                directoryNode.Nodes.Add(CreateDirectoryNode(directory));
            foreach (var file in directoryInfo.GetFiles())
                directoryNode.Nodes.Add(new TreeNode(file.Name));
            return directoryNode;
        }
    }
}
 
cs



2019/01/14 - [C# 기술] - 폴더 모니터링. Directory Watcher

2019/01/19 - [C# 기술] - TextBox 숫자만 입력 ( Windows Form C# )



728x90
반응형

'C# 기술' 카테고리의 다른 글

C# substring 문자열 자르기  (0) 2019.01.22
C# File 쓰기 ( File, StreamWrite )  (0) 2019.01.22
C# Color 사용하기  (0) 2019.01.20
C# try catch finally 제대로 쓰기  (0) 2019.01.20
DataTable VS Dictionary 검색 속도 차이  (2) 2019.01.19

댓글