Blog Content

    티스토리 뷰

    22.C#_WinForm - 윈도우탐색기

    반응형

    TreeView와 ListView 컨트롤을 이용하여 간단한 윈도움 탐색기 예제입니다.


            메뉴추가 :
                    FrmMain - 공용컨트롤 - 간단한 윈도우탐색기

    WinExplorer.Designer.cs

    [그림22-1]

             private System.Windows.Forms.ListView listView;
            private System.Windows.Forms.TreeView treeView;

    ListView 속성

    ListView속성 - Columns 설정
    ListView속성 - View - Details 설정

    [그림22-2]

    TreeView 속성

    추가한 TreeView 컨트롤 이벤트를 설정합니다.
    [그림22-3]

    WinExplorer.cs
    using System.IO; //추가 파일관련 - 참조파일에서 추가 System.IO
    using System.Management; //추가 : 폴더목록 가져오기 위해 참조파일에서 추가
                                                       
    System.Management

    private void WinExplorer_Load(object sender, EventArgs e)
    {
            DisplyData();
    }

    //전체 폴더 목록을 TreeView에 출력
    private void DisplyData()
    {
            this.treeView.Nodes.Add(new TreeNode("니 컴퓨터")); //1.루드 등록

            var q = new ManagementObjectSearcher(
                    "SELECT * From Win32_LogicalDisk");

            var arr = q.Get(); //목록 받아오기
            foreach (var item in arr)
            {
                    this.treeView.Nodes[0].Nodes.Add(
                    new TreeNode(item["Name"].ToString())); //2.자식 노드로 추가
            }
    }

    private void treeView_AfterSelect(object sender, TreeViewEventArgs e)
    {
            if (this.treeView.SelectedNode.Text != "내 컴퓨터")
            {
                    DisplayList(treeView.SelectedNode.Text + @"\");
            }
    }

    //TreeView에서 드라이브 선택시 ListView에 해당 드라이브 내용 출력
    private void DisplayList(string dir)
    {
            this.listView.Items.Clear(); //클리어
            if (!Directory.Exists(dir))
            {
                    MessageBox.Show("드라이브가 없거나 로드 불가");
            }
            else
            {
                    DirectoryInfo di = new DirectoryInfo(dir);
                    foreach (var item in di.GetDirectories()) //폴더 목록
                    {
                            listView.Items.Add(
                            new ListViewItem(new string[] { item.Name, "" }));
                    }
                    foreach (var item in di.GetFiles())
                    {
                        listView.Items.Add(
                            new ListViewItem(new string[]
                            {
                                    item.Name,item.Length.ToString()
                            }));
                    }
                }
            }

    결과확인

    [그림22-4]

    22WinFrmMain.zip
    다운로드

    반응형

    Comments