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


189

I는 한 TextBox이름 textbox1Button이름 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.