반응형
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 |
댓글