파일을 선택하면 선택한 파일이 속한 디렉토리에 있는 서브 디렉토리까지 그리고 파일의 리스트까지 박스에 출력하는 예제.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Text;
using System.Windows.Forms;
namespace 기말고사_공부하기
{
public partial class Form1 : Form
{
DirectoryInfo dinfo; // 현 디렉토리 정보 저장
public Form1()
{
InitializeComponent();
}
//열기메뉴 클릭시
private void toolStripMenuItem2_Click(object sender, EventArgs e)
{
OpenFileDialog d = new OpenFileDialog(); //오픈다이얼로그 생성
if (d.ShowDialog() != DialogResult.OK) return;
listBox1.Items.Clear();
FileInfo finfo = new FileInfo(d.FileName); //파일인포 생성(파일다이얼로그의 파일 이름)
dinfo = finfo.Directory; //현 디렉토리에 선택 파일의 디렉토리 저장
listBox1.Items.Add("..");
DirectoryInfo[] dir1 = dinfo.GetDirectories(); //디렉토리배열에 선택파일의 디렉토리 가져와저장
foreach (DirectoryInfo dd in dir1)
{
listBox1.Items.Add(dd.Name);
}
listBox2.Items.Clear(); //매번 선택시마다 바뀌게 클리어 해준다.
FileInfo[] files = dinfo.GetFiles(); //파일 배열도 생성하고 선택 파일 가져와 저장
foreach (FileInfo f in files)
{
listBox2.Items.Add(f.Name);
}
this.Text = dinfo.FullName.ToString();
}
//디렉토리가 저장되는 박스선택 이벤트(파일 저장박스에 해당 디렉토리의 하위파일들 열거)
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if(listBox1.SelectedIndex == 0)
{
if(dinfo.Parent == null)
{
MessageBox.Show("루트입니다");
return;
}dinfo = dinfo.Parent;
}
else
{
DirectoryInfo[] dir2 = dinfo.GetDirectories(); //선택 디렉토리를 배열에 저장
dinfo = dir2[listBox1.SelectedIndex - 1];
}
DirectoryInfo[] d2 = dinfo.GetDirectories();
listBox1.Items.Add("..");
foreach(DirectoryInfo d in d2)
{
listBox1.Items.Add(d.Name);
}
FileInfo[] f = dinfo.GetFiles();
listBox2.Items.Clear();
foreach(FileInfo ff in f)
{
listBox2.Items.Add(ff.Name);
}
this.Text = dinfo.FullName.ToString();
}
private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
{
string str = listBox2.SelectedItem.ToString();
MessageBox.Show(str);
}
private void toolStripMenuItem3_Click(object sender, EventArgs e)
{
Close();
}
}
}
'C#' 카테고리의 다른 글
직렬화,역직렬화 (0) | 2020.12.05 |
---|---|
C# 파일과 디렉토리 (0) | 2020.12.03 |
C# richtextbox를 이용한 예제(복사,붙여넣기,바꾸기) (0) | 2020.12.03 |
4.델리게이트,이벤트,애트리뷰트 (0) | 2020.09.18 |