본문 바로가기
프로그래밍/C#, WPF, .Net

[WPF] 오픈 파일 다이얼로그 창으로 선택한 파일 경로 가져오는 방법 (파일 선택 창 열기, OpenFileDialog, How to get file path)

by GhostWeb 2020. 4. 11.
반응형



이번에는 WPF에서 오픈 파일 다이얼로그 창으로 선택한 파일의 경로를 가져오는 방법에 대해서 알아보도록 할게요.


테스트를 위해 <버튼>과 선택한 파일의 경로를 출력하기 위해 <텍스트> 박스를 추가하고 버튼을 더블 클릭하여 버튼 클릭 이벤트를 등록해주세요.



1. using System.Windows.Forms 추가하기

오픈 파일 다이얼로그(OpenFileDialog)를 사용하기 위해서는 using System.Windows.Forms를 사용해야 되는데요.


using System.Windows.Forms;


만약에 using System.Windows.Forms;를 추가하였는데 빨간 밑줄이 나오며 <Forms 형식 또는 네임스페이스 이름이 없습니다.>라는 경고가 나오면 아래처럼 참조에서 System.Windows.Forms를 추가해주세요.



1-1. 솔루션 탐색기의 <참조>에 마우스 포인트를 두고 오른쪽 클릭을 한 후 나오는 메뉴에서 <참조 추가>를 클릭하세요.



1-2. <참조 관리자>에서 <COM> 메뉴에서 form를 검색한 후 나오는 항목을 체크하고 확인을 눌러주세요.

만약에 <참조를 추가할 수 없습니다>라는 메시지가 나올 경우 1-3을 참고하세요.




1-3. 1-2에서 문제가 발생했을 경우 왼쪽 메뉴에 있는 COM 아래의 <찾아보기>에서 수동으로 사용하시는 .NETFramework의 버전 폴더 안에 있는 System.Windows.Forms.dll을 추가하시면 해당 경고가 사라져요.


- 파일 경로 (.NETFramework v4.7 경우)

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7\System.Windows.Forms.dll





2. OpenFileDialog 추가하고 선택한 파일의 전체 경로 출력하기

이제 버튼 클릭 이벤트 쪽에 아래의 코드를 추가하세요.


- 버튼 이름 : OpenFileDialogButton

- 텍스트 박스 이름 : FilePathTextBox


using System.Windows.Forms;


// 버튼 클릭

private void OpenFileDialogButton_Click(object sender, RoutedEventArgs e)

{

    OpenFileDialog dlgOpenFile = new OpenFileDialog();

    dlgOpenFile.Filter = "Image Files (*.jpg, *.png) | *.jpg; *.png; | All files (*.*) | *.*";


    if (dlgOpenFile.ShowDialog().ToString() == "OK")

    {

        // 텍스트 박스에 파일 경로 쓰기

        FilePathTextBox.Text = dlgOpenFile.FileName;

    }

}


OpenFileDialog Filter는 파일 열기 창에서 필터링을 위한 것으로 | 을 기준으로 앞에는 오른쪽 하단에 있는 콤보 박스(Combo Box)에 나오는 문자(예 : Image Files (*.jpg, *.png)), 뒤에는 필터링되어 열기 창에서 보여질 파일의 확장자 명이에요.


테스트를 위해 jpg, png, bmp 파일을 같은 폴더에 넣어 놨지만 필터에 jpg, png가 설정되어 있어 다음과 같이 All files로 선택하지 않으면 bmp 파일이 보이지 않아요.


- Image Files (*.jpg, *.png) 선택 시



-  All files (*.*) 선택 시



파일을 선택하고 확인 버튼을 누르면 다음과 같이 텍스트 박스에 선택한 파일의 전체 경로가 나오는 것을 볼 수 있어요.



그럼 이상으로 OpenFileDialog 포스팅을 마치며 오늘도 즐거운 하루 보내세요.

 

반응형