현 블로그는 모바일 환경이 아닌 PC환경에 최적화 되어있습니다.

 Mir의 운영환경

 본체

 DeskTop

 O S

 Windows XP Professional Version 2002 Service Pack 2

 Application

 VisualStudio2005 (Ver.8.0.50727.42)

 .Net

 Framework Ver 2.0

openFileDialog를 이용하여 파일읽기

(System.Windows.Forms.openFileDialog)


openFileDialog를 이용하여 파일을 정보를 가져오고 읽어보자.

(참조 : https://msdn.microsoft.com/ko-kr/library/system.windows.forms.openfiledialog(v=vs.110).aspx)

 

openFileDialog를 처음 사용해보시면 "어 어디서 많이 본거" 라는 생각이 먼저 들겁니다.

윈도우프로그램에서 파일을 열때 항상 보이던 창이 보입니다.

익숙한 만큼 몇몇 주요 속성만 알아두면 파일관련 작업을 할때 매우 편리합니다.

 

우선 파일열기창을 열기전에 지정해야할 속성을 살펴봅시다.

 

- 속성창 -

- 실행창 -

 

주로 이 4가지 속성을 지정한뒤 파일열기창을 불러옵니다.

(소스코드로 설정해줘도 되지만 필자는 디자인편집에서 할수 있는걸 굳이 소스로 적기 귀찮아 해서...)

① FileName - 파일열기창을 부를때 Default로 설정할 파일이름 (파일이름이 정해져있을경우 사용 하거나 "*.txt" 같이 파일 형식을 적어둘때도 있습니다.)

② InitialDirectory - 파일열기창을 부를때 Default로 설정할 폴더경로 (마찬가지로 파일경로가 정해져있을경우 사용합니다. 지정을 하지 않았을경우 이전에 파일을 부른 경로가 Default로 설정됩니다.)

③ Filter - 다른 속성은 지정을 안해도 대충 그럴듯 하게 보이지만 Filter는 지정을 안할경우 뭔가 좀 어색합니다.(개인적인 생각입니다.) Filter를 지정하는 방식은 아래와 같습니다.

필터설명|필터옵션|필터설명|필터옵션|......

[ 필터설명 + 세로줄('|') + 필터옵션 ] 이렇게 하나의 필터가 완성됩니다.

그리고 각 필터마다 구분도 세로줄 ('|')로 해주시면 됩니다.

하나의 필터에 여러 구분자를 넣고 싶으시면 [ Image File|*.JPG;*.BMP;*.ICO;*.EMF;*.GIF; ] 이런식으로 넣어주면 됩니다.

굳이 넣을필요가 없더라도 개인적으론 [ 모든 파일 (*.*)|*.* ] 이거 하나정도는 넣어두는게 보기 좋습니다.

④ Title - 왼쪽 상단 타이틀 (따로 지정을 하지 않았을경우 Default값으로 "열기" 라고 표시 됩니다.)

 

그외

CheckFileExists, CheckPathExists - 선택한 폴더와 파일이 없을경우 경고창을 띄워줍니다. 기본값 True로 설정되어 있어서 굳이 따로 설정할 필요는 없지만 혹시 따로 설정할 경우 꼭 폴더, 파일 채크를 해주시면 됩니다.

Multiselect - 다중선택 가능 여부를 설정합니다. 복수의 파일을 불러서 무언가의 기능을 수행하고 싶을때 설정해주시면 됩니다. 다중선택을 할경우 Data 사용방법은 후에 다시 올리도록 하겠습니다.

 

이외의 속성은 MSDN 설명을 참조하시기 바랍니다.

 

 

이제 파일열기창을 불러오는방법과 파일선택후 처리에 대해 아래 예제로 알아보겠습니다.

(디자인 모드 캡쳐가 귀찮아서 소스로 속성을 정의 했습니다.;;)

- 예제 -

using System;
using System.Windows.Forms;

namespace LogReader
{
    public partial class Main : Form
    {

        public Main()
        {
            InitializeComponent();     
        }

        private void tsm_Open_Click(object sender, EventArgs e)
        {
            ShowFileOpenDialog();
        }

        /// 
        /// 그림파일오픈창을 로드후 해당 파일의 FullPath를 가져온다.
        /// 
        /// 파일의 FullPath 파일이 없거나 선택을 안할경우 ""를 리턴
        public string ShowFileOpenDialog()
        {
            //파일오픈창 생성 및 설정
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Title = "파일 오픈 예제창";
            ofd.FileName = "test";
            ofd.Filter = "그림 파일 (*.jpg, *.gif, *.bmp) | *.jpg; *.gif; *.bmp; | 모든 파일 (*.*) | *.*";

            //파일 오픈창 로드
            DialogResult dr = ofd.ShowDialog();
            
            //OK버튼 클릭시
            if (dr == DialogResult.OK)
            {
                //File명과 확장자를 가지고 온다.
                string fileName = ofd.SafeFileName;
                //File경로와 File명을 모두 가지고 온다.
                string fileFullName = ofd.FileName;
                //File경로만 가지고 온다.
                string filePath = fileFullName.Replace(fileName, "");

                //출력 예제용 로직
                label1.Text = "File Name  : " + fileName;
                label2.Text = "Full Name  : " + fileFullName;
                label3.Text = "File Path  : " + filePath;
                //File경로 + 파일명 리턴
                return fileFullName;
            }
            //취소버튼 클릭시 또는 ESC키로 파일창을 종료 했을경우
            else if (dr == DialogResult.Cancel)
            {
                return "";
            }

            return "";
        }

        
    }
}

- test 내용 : 11.bmp 선택 -

 

- 출력 -

 

 


Tip. 파일오픈창이 아닌 저장창(SaveFileDialog)도 있습니다.

Tip. 폴더오픈창(FolderBrowserDialog)도 있습니다.


※ 관련글


+ Recent posts