114. 리스트뷰(ListView)와 트리뷰(TreeView)를 이용해서 간단한 윈도우탐색기 만들기
.NET프로그래밍/WinForm 2009. 8. 28. 16:20 |
* 앞의 예제에서 했던대로 "리스트뷰(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"가 출력됨.
'.NET프로그래밍 > WinForm' 카테고리의 다른 글
116. 툴팁(ToolTip) (0) | 2009.08.31 |
---|---|
115. 탭 컨트롤(TabControl) (0) | 2009.08.31 |
113. 트리뷰(TreeView) (0) | 2009.08.28 |
112. 리스트뷰(ListView) (0) | 2009.08.28 |
111. PictureBox와 OpenFileDialog를 이용하여 간단한 이미지뷰어(ImageViewer) 만들기 (0) | 2009.08.28 |