본문 바로가기

프로그래밍/C#

C# 윈폼 - 나만의 탐색기, 폴더뷰어

반응형

C# 윈폼 - 나만의 탐색기, 폴더뷰어

 

C# 윈폼으로 폴더뷰어를 만들어봤다.

이름에 뷰어가 들어간 이유는 파일 복사,붙여넣기,삭제 기능 등은 없기 때문이다.

대신 더블클릭하면 파일이 실행된다. 폴더를 더블클릭하면 폴더가 열린다.

 

 

이 프로그램을 만든 이유.

 

윈도우의 기본 탐색기는 창이 2분할 까지만 되기 때문에 폴더 경로를 한눈에 보기가 어려웠다.

트리뷰라고 폴더를 확장하여 볼 순 있지만 난 조금 불편했다.

그리고 탐색기 상단에 한줄로 경로가 나오지만 모두 어딘가 부족했다.

 

그래서 옆으로 주욱 하위폴더들을 확인할 수 있는 탐색기를 생각하게 된 것이다.

 

왼쪽 위에 '메인경로등록' 버튼을 누르면 최초 폴더 경로를 등록할 수 있다.

그러면 왼쪽 첫번째 칸에 하위 폴더와 파일들이 정렬된다.

 

내문서를 기본 경로로 등록했다. 하위 폴더와 파일들이 나타난다.

 

그리고 폴더를 클릭하면 하위 폴더와 파일들이 옆칸에서 차례대로 나타난다.

클릭은 더블클릭이 아니고 한번 클릭이다. 좀 더 편하다.

선택한 폴더와 파일의 이름은 볼드체로 굵게 표시되고 배경색도 변경되어 보기 쉽게 표현된다.

 

.

.

부족한 기능들.

- 윈도우 시스템에서 만든 일부 폴더는 선택 시 에러가 난다.

  에러가 나면 프로그램은 에러표시창을 띄우고 확인을 누르면 자동으로 다시 시작한다.

- 복사, 붙여넣기, 삭제 등 기능들이 없다.

- 파일 속성 자세히 보기 기능이 없다.

- 윈도우 기본 탐색기에 있는 다른 좋은 기능들이 없다.

 

 

사용한 C# 기능들.

- listView1.View = View.Details;

- FileInfo fi = new FileInfo(Application.StartupPath + "\\" + "mainFolder.txt");

- if (fi.Exists)

- path = File.ReadAllText(Application.StartupPath + "\\" + "mainFolder.txt");

- if (Directory.Exists(path))

- MessageBox.Show("에러났어요. 프로그램 재시작합니다.");

- Application.Restart();

- FolderBrowserDialog fbd = new FolderBrowserDialog();

- if (fbd.ShowDialog() == DialogResult.OK)

- File.WriteAllText(Application.StartupPath + "\\" + "mainFolder.txt", path);

- listView1.Items.Clear();

- listView1.BeginUpdate();
- listView1.View = View.Details;

- ListViewItem item;

- DirectoryInfo dir = new DirectoryInfo(path);

- FileAttributes chkatt = File.GetAttributes(dir.FullName);

- if ((chkatt & FileAttributes.Directory) == FileAttributes.Directory)

- DirectoryInfo[] di = dir.GetDirectories();

- IEnumerable<DirectoryInfo> query = from word in di
                                                  orderby word.Name.ToLowerInvariant().Substring(0, 1)
                                                   select word;

- foreach (DirectoryInfo directory in query)

- item = new ListViewItem(directory.Name, 0);

- listView1.Items.Add(item);

- FileInfo[] fi = dir.GetFiles();

- Icon iconForFile = SystemIcons.WinLogo;

- item = new ListViewItem(file.Name, 0);

- if (!imageList1.Images.ContainsKey(file.Extension))

- iconForFile = Icon.ExtractAssociatedIcon(file.FullName);

- imageList1.Images.Add(file.Extension, iconForFile);

- item.ImageKey = file.Extension;

- Icon.Dispose();

- listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); //모든 열 사이즈 자동조절

- listView1.EndUpdate();

- System.Diagnostics.Process.Start(path + "\\" + listview1.items[listview1.Focuseditem.Index].Text)

- Font.Dispose();

 

 

.

.

프로젝트 파일 첨부

Explorer_project.zip
0.47MB

.

.

실행파일 첨부

Explorer.zip
0.01MB

압축풀기 후 exe파일 실행.

 

 

 

 

 

반응형