C#

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

Godffs 2009. 8. 28. 18:03
반응형

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
다운로드

반응형