2012-05-18 52 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/zh-cn/library/system.windows.forms.filedialog.filterindex.aspx)來確定當用戶在對話框中單擊確定時選擇哪個篩選器? –

+0

我對這個房產並不熟悉,如果我事先知道它,我會提出這個建議而不是我的答案。感謝您的鏈接,雖然每天在這裏學習新的東西:) – dtsg

+0

我已經完成使用Dialog.FileName.Endswith(「」)。感謝您提供Endswith()函數。 – Amarnath

1

我認爲你不能這樣做,雖然它是開放的。

當用戶按下確定,然後在Path.GetExtension方法或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 
      } 
     } 

打開文件對話框文件名屬性是選擇的文件名。

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; 
} 
相關問題