파일 대화 상자를 열고 WPF 컨트롤 및 C #을 사용하여 파일을 선택하십시오.


189

I는 한 TextBox이름 textbox1과 Button이름 button1. 클릭하면 button1이미지 파일 (type jpg, png, bmp ...) 만 검색하기 위해 파일을 찾아보고 싶습니다. 그리고 이미지 파일을 선택하고 파일 대화 상자에서 확인을 클릭하면 파일 디렉토리가 다음 textbox1.text과 같이 작성되기를 원합니다 .

textbox1.Text = "C:\myfolder\myimage.jpg"

답변:


440

그와 같은 것이 필요한 것이어야합니다.

private void button1_Click(object sender, RoutedEventArgs e)
{
    // Create OpenFileDialog 
    Microsoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();



    // Set filter for file extension and default file extension 
    dlg.DefaultExt = ".png";
    dlg.Filter = "JPEG Files (*.jpeg)|*.jpeg|PNG Files (*.png)|*.png|JPG Files (*.jpg)|*.jpg|GIF Files (*.gif)|*.gif"; 


    // Display OpenFileDialog by calling ShowDialog method 
    Nullable<bool> result = dlg.ShowDialog();


    // Get the selected file name and display in a TextBox 
    if (result == true)
    {
        // Open document 
        string filename = dlg.FileName;
        textBox1.Text = filename;
    }
}

20
if 대신에 (result.HasValue && result.Value) if (result == true)
— eflles

2
@efles msdn.microsoft.com/en-us/library/… 의 공식 샘플 코드보다 귀하의 방식이 제공하는 가치는 무엇 입니까?
— Dirk Bester

5
@eflles 샘플은 기술적으로 정확합니다. 에서 msdn.microsoft.com/en-us/library/2cf62fcy.aspx : 당신이 nullable 형식과 비교를 수행 할 때 null 허용 유형 중 하나의 값이 널 (null)이고 다른 하나는 아닌 경우, 모든 비교는 제외 false로 평가! = (같지 않음). 그러나 이것이 이것이이 기술의 착취인지 논란의 여지가 있다고 생각합니다 (개인적으로는이 경우 괜찮다고 생각합니다).
— 하드 슈나이더

1
물론 @Terribad! XAML의 텍스트 상자에 바인딩 된 속성을 업데이트하기 만하면됩니다.this.FileName = filename
— Ohad Schneider

1
@sproketboy "순수한 64 비트 데스크톱 응용 프로그램"의 의미에 대해 완전한 혼란을 고백해야합니다. 더 설명해 주시겠습니까? 내 이해는 Microsoft.Win32라이브러리가 기본 OS에 대한 관리되는 API라는 것입니다. 그들이 OS와 대화하는 방법은 나머지 (x64 64 비트) 응용 프로그램과 관련이 없어야하며 OS API 자체는 레거시 이유로 'blah32'라고 불립니다.
— VisualMelon

23
var ofd = new Microsoft.Win32.OpenFileDialog() {Filter = "JPEG Files (*.jpeg)|*.jpeg|PNG Files (*.png)|*.png|JPG Files (*.jpg)|*.jpg|GIF Files (*.gif)|*.gif"}; 
var result = ofd.ShowDialog();
if (result == false) return;
textBox1.Text = ofd.FileName;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.