2012-05-18 6 views
0

파일 대화 상자를 열어야합니다. XML 또는 MAP 파일 중 하나를 선택해야합니다. 선택된 파일이 MAP 파일이면 단계 A를 수행해야합니다. 그렇지 않으면 선택된 파일이 XML 인 경우 단계 B를 수행해야합니다. 내 질문은 대화 상자 응용 프로그램에서 선택한 파일을 아는 방법입니까?C에서 열린 대화 상자에서 선택한 파일을 확인하는 방법 #

OpenFileDialog fileDialog1 = new OpenFileDialog(); 
fileDialog1.Filter = "XML Files|*.xml|MAP Files|*.map"; 
fileDialog1.ShowDialog(); 

위의 필터에서 어떤 파일을 선택했는지 아는 방법은 무엇입니까?

open file dialog

+1

이 대화 상자는 모달, 어떻게 코드 캐치 그 콤보에 선택된 인덱스 변화? 확인을 기다렸다가 요청한 파일 이름을 처리해야합니다. 아니면 당신의 의도를 오해하고 있습니까? – Steve

+0

@Steve : 대화 상자를 연결하고 이러한 이벤트에 대한 알림을받을 수 있습니다. 기본적으로 이벤트 처리기 메서드를 연결하면 사용자가 대화 상자에서 특정 작업을 수행 할 때마다이 메서드가 호출됩니다. 그러나 Amarnath가 여기에서 원하는 것은 나에게 들리지 않습니다. –

+0

@CodyGray 고마워, 네가 맞아.하지만 ... 내가 어떻게 말할 수 있니? 총으로 날아 다니는거야? – Steve

답변

1

당신은 사용할 수 있습니다

string fileName = OpenFileDialog.Filename; 

    if(fileName.EndsWith(".xml")) 
    { 
    // 
    } 
    else if(fileName.EndsWith(".map")) 
    { 
    // 
    } 
+0

['FileDialog.FilterIndex' 속성] (http://msdn.microsoft.com/en-us/library/system.windows.forms.filedialog.filterindex.aspx)을 사용하여 사용자가 대화 상자에서 확인을 클릭했을 때 어떤 필터가 선택 되었습니까? –

+0

나는 그 속성에 익숙하지 않다. 사전에 알았 더라면 내 대답 대신 제안했을 것이다. 링크 주셔서 감사합니다, 여기에 매일 새로운 것을 배웁니다 :) – dtsg

+0

Dialog.FileName.Endswith ("")를 사용했습니다. Endswith() 함수를 제안 해 주셔서 감사합니다. – Amarnath

1

난 당신이 할 수 있다고 생각이 열려있는 동안 그.

사용자가 확인을 누르면 메서드 또는 OpenFileDialog.Filename.Endswith(".xml")OpenFileDialog.Filename을 전달합니다.

확장명이 XML인지 확인한 다음 x 단계를 수행하십시오. y 단계.

가 필요한 기능을 참조 편집, 파일 열기 대화 상자에서 이벤트이 있어야한다.

2 개 OpenFileDialog 클래스

  1. System.Windows.Forms
  2. Microsoft.Win32

모두 당신이 볼 수있는 하나 개의 이벤트 만 OpenFileDialog.FileOK을 가지고있다.

+0

네, 이미 벌금을 냈습니다. 그러나 궁금한 점은 "파일을 가져오고 확장자를 가져 오는 대신 필터에서 선택한 파일을 알 수있는 방법이 있습니까?" – Amarnath

+0

불행히도 No. –

+2

사용자가 xml 또는 map으로 끝나지 않는 파일을 선택할 수도 있습니다. 파일 이름 텍스트 상자에'*. * '를 입력하고 (Enter를 눌러) 다른 것을 선택하십시오. 이 필터는 사용자가 유효한 유형을 선택하는 데 도움이되지만 시행하지는 않습니다. 이것은 어쨌든 반환 값을 확인해야 함을 의미합니다. – Davio

0
 openFileDialog1.FileName = ""; 
     if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) 
     { 
      string filename = openFileDialog1.FileName; 

      if (File.Exists(filename)) 
      { 
       //do something here 
      } 
     } 

OpenFileDialog를파일 이름 속성은 선택한 파일 이름입니다.

0

당신은 스택 레이블 스위치 비슷한 확장 기능을 사용하여 지원되지 않는 파일 형식에 대한 기본 케이스를 사용할 수 있습니다

switch (extension) 
{ 
    case "xml": 
    case "xaml": 
     Debug.WriteLine("It's an XML!"); 
     break; 
    case "map": 
     Debug.WriteLine("It's a map!"); 
     break; 
    default: 
     MessageBox.Show("Please select an XML or MAP file"); 
     // Show the dialog again 
     break; 
} 
관련 문제