C#

C# OpenFileDialog 사용하기

J개발자 2020. 12. 4. 01:17

파일을 선택하면 선택한 파일이 속한 디렉토리에 있는 서브 디렉토리까지 그리고 파일의 리스트까지 박스에 출력하는 예제.

파일 Menustrip에 열기와 종료 메뉴 설정.

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