2013-11-22 131 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