2013-11-22 54 views
1

我正在學習C和C#,問題是C#,我正在閱讀這本編程書籍,而且這段代碼沒有編譯。FileDialog沒有找到方法ShowDialog()

enter image description here

FileDialog僅示出智能感知兩個方法(equals和的ReferenceEquals)。代碼來自一本書,所以預計這種方法和屬性是FileDialog類的一部分嗎?

下面是代碼:

private void cmdBrowse_Click(object sender, EventArgs e 
    { 
     if (FileDialog.ShowDialog() != DialogResult.Cancel) 
     { 
      txtLocation.Text = FileDialog.FileName; 
      cmdWatch.Enabled = true; 
      FileDialog. 
     } 
    } 

編輯:我發現了什麼問題,我沒有添加一個到的FileDialog的形式,我不知道什麼是FileDialog的是,現在我還記得。 Dohh

+0

請在您的問題中包含實際的代碼,而不是代碼的屏幕截圖 – musefan

+0

感謝您的所有答案 – somethingSomething

回答

3

問題是你想要一個類的實例,而不是直接使用該類。然而,FileDialog是一個抽象類,這意味着你不能直接實例化它,但有幾個實現可以使用...

假設你想選擇(打開)一個文件,那麼你可以使用OpenFileDialog類:

OpenFileDialog dialog = new OpenFileDialog(); 
if(dialog.ShowDialog() != DialogResult.Cancel) 
{ 
    txtLocation.Text = dialog.FileName; 
    cmdWatch.Enabled = true; 
} 

另外,如果你想選擇一個文件的位置保存,然後使用SaveFileDialog

2

FileDialog是一個抽象類。你必須使用它的一個實現。可以根據您的需求選擇SafeFileDialogOpenFileDialog

有關FileDialog課程的更多信息,請登錄MSDN

2

FileDialog是一流的,但你需要它的一個實例將其打開。所以,假設你使用的是OpenFileDialog和它的名字是OpenFileDialog1

if(OpenFileDialog1.ShowDialog() != DialogResult.Cancel) 
{ 
    // ... 
} 

您通常通過調用類的構造函數創建一個實例,FE:

OpenFileDialog OpenFileDialog1 = new OpenFileDialog(); 

只能調用通過類名中的方法是static