* 앞의 예제에서 했던대로 "리스트뷰(ListView)"는 "Columns"속성에 들어가서 "컬렉션 편집기"로 편집     --> 'View'속성을 "Details"로 바꿈.
* "트리뷰(TreeView)"는 앞의 예제방법과는 다르게 'FrmMyComputer.cs [디자인]'에서 "속성"부분을 변경하지 않았다. 대신 아래의 'FrmMyComputer.cs'에서 형광색 칠해진 코드부분으로 "트리뷰(TreeView)"를 구현하였다.


==> Program.cs



using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace MyWinForms
{
    static class Program
    {
        /// <summary>
        /// 해당 응용 프로그램의 주 진입점입니다.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MyWinForms.Sample.FrmMyComputer());
        }
    }
}




==============================================================================================




==> FrmMyComputer.cs




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Management;
using System.IO;

namespace MyWinForms.Sample
{
    public partial class FrmMyComputer : Form
    {
        public FrmMyComputer()
        {
            InitializeComponent();
        }

        private void FrmMyComputer_Load(object sender, EventArgs e)
        {
            DisplayData();
        }
        // 전체 폴더 목록을 왼쪽 트리뷰에 출력
        private void DisplayData()
        {
            this.treeView1.Nodes.Add(new TreeNode("니 컴퓨터"));

            var q =
                new ManagementObjectSearcher(
                    "SELECT * From Win32_LogicalDisk");
            var arr = q.Get(); // 목록 받아오기

            foreach (var item in arr)
            {
                this.treeView1.Nodes[0].Nodes.Add(
                    new TreeNode(item["Name"].ToString())); // 자식 노드로 추가
            }
        }

        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (this.treeView1.SelectedNode.Text != "니 컴퓨터")
            {
                DisplayList(treeView1.SelectedNode.Text + @"\");
            }
        }
        // 왼쪽 트리뷰에서 C, D 선택시 오른쪽에 해당 폴더 내용출력
        private void DisplayList(string dir) {
            this.listView1.Items.Clear(); // 클리어
            if (!Directory.Exists(dir)) {
                MessageBox.Show("드라이브가 없거나 로드 불가");
            }
            else {
                DirectoryInfo di = new DirectoryInfo(dir);
                foreach (var item in di.GetDirectories()) // 폴더목록
                {
                    listView1.Items.Add(
                        new ListViewItem(new string[]{item.Name, ""}));
                }
                foreach (var item in di.GetFiles()) // 파일목록
                {
                    listView1.Items.Add(
                        new ListViewItem(new string[] {
                            item.Name, item.Length.ToString() }));
                }
            }
        }
    }
}





< 실행결과 >

--> "리스트뷰(ListView)" : "Columns"속성에서 "컬렉션 편집기"로 편집  






--> "리스트뷰(ListView)" : "Columns"속성에서 "컬렉션 편집기"로 편집 후 'View'속성을 "Details"로 바꿈.




--> 실행 후 "C : "를 클릭하였을 때 "리스트뷰(ListView)"에 C드라이브에 있는 '폴더'목록들과 '파일'목록들이 출력되었다.




--> "A : " 또는 "E : " 또는 "F : "를 클릭하였을 때는 존재하는 파일 또는 폴더가 없으므로 위에 있는 "FrmMyComputer.cs"에서 구현한대로 "MessageBox"가 출력됨.





Posted by holland14
: