본문 바로가기
프로그래밍/C#

[C#] 폴더안의 파일 목록 만들기(리스트박스)

by 코딩연습생 2020. 9. 3.
반응형

안녕하세요

 

코딩연습생입니다~

 

요즘 코로나도 문제이지만 태풍이 너무 많이 오네요~ 짜증날 정도로ㅎㅎ

글자님들도 코로나 + 태풍 조심하시길 바랍니다

 

이번 포스팅은 C#으로 리스트박스(ListBox)를 사용하여 폴더내의 파일 목록을 만들고 

 

ValueMember와 DisplayMember를 사용하여 속성값, 보여지기값을 사용하는 방법을 알려드릴려고 합니다

 

물론, 이미 다 아실수도 있지만 저는 머리가 나빠서 기록차원에서 포스팅 할께요~ㅎ

 

일단 첫번째는 버튼을 통해 폴더 지정하는 방법입니다

 

그럼 젤 중요한 버튼이 있어야죠

 

간단하게 저는 폴더라는 이름으로 버튼을 생성했습니다

 

그리고 버튼 Click 이벤트에 아래와 같이 코딩을 했습니다

 

                FolderBrowserDialog dialog = new FolderBrowserDialog();
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                
                }

 

폴더를 선택할 수 있는 Dialog를 띄우기 위함입니다

 

버튼을 누루면 아래와 같은 선택 창이 띄게 되지요

 

그럼 두번째로 폴더를 선택한뒤에 그 폴더안에 있는 하위 파일 목록을 만들어야 합니다

 

그 리스트는 C#의 기본 컨트롤중에 리스트박스(ListBox)를 사용했습니다

 

화면 디자인은 심플합니다

그다음 아까 만들었던 버튼 Click이벤트에 파일 목록을 가져와서 리스트뷰에 뿌려줄수 있게 코딩을 합니다

 

                FolderBrowserDialog dialog = new FolderBrowserDialog();
                if (dialog.ShowDialog() == DialogResult.OK)
                {

                    //불량 이미지 폴더
                    string Folder_Path = dialog.SelectedPath;

                    this.listBox1.Refresh();
                    
                    DirectoryInfo di = new DirectoryInfo(Folder_Path);

                    if (di.Exists == true)
                    {
                        DataTable dt = new DataTable();
                        dt.Columns.Add("FileName", typeof(string));
                        dt.Columns.Add("FullName", typeof(string));

                        DataRow ds = null;

                        foreach (FileInfo file in di.GetFiles())
                        {
                            ds = dt.NewRow();
                            ds["FileName"] = file.Name.Substring(0, file.Name.Length - 4);
                            ds["FullName"] = file.FullName;
                            dt.Rows.Add(ds);
                        }

                        listBox1.DataSource = dt;
                        listBox1.ValueMember = "FullName";
                        listBox1.DisplayMember = "FileName";
                        

                    }
                }

 

여기서 보셔야 할 부분은 DataTable를 생성하여 컬럼을 임의로 생성한 부분

 

                        DataTable dt = new DataTable();
                        dt.Columns.Add("FileName", typeof(string));
                        dt.Columns.Add("FullName", typeof(string));

 

그리고 리스트뷰(ListView)에 DataSource를 사용하여 DataTable값을 넣어주고 ValueMember와 DisplayMember를 

 

사용한 부분

 

                        listBox1.DataSource = dt;
                        listBox1.ValueMember = "FullName";
                        listBox1.DisplayMember = "FileName";

 

이렇게 사용하시게 되면 화면에 보이는 값과 속성 값을 따로 사용하실 수 있습니다

 

 

이렇게 활용하여 사용하실수 있습니다

 

반응형

댓글