FileDialog 类

定义

显示一个用户可从中选择文件的对话框窗口。

public ref class FileDialog abstract : System::Windows::Forms::CommonDialog
public abstract class FileDialog : System.Windows.Forms.CommonDialog
type FileDialog = class
    inherit CommonDialog
Public MustInherit Class FileDialog
Inherits CommonDialog
继承
派生

示例

下面的代码示例使用 OpenFileDialog 和 的 FileDialog 实现,说明了如何创建、设置属性以及显示对话框。 该示例使用 ShowDialog 方法显示对话框并返回 DialogResult。 该示例需要一个窗体,其中放置了 一个 Button ,并 System.IO 添加了命名空间。

private:
   void button1_Click( Object^ /*sender*/, System::EventArgs^ /*e*/ )
   {
      Stream^ myStream;
      OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog;

      openFileDialog1->InitialDirectory = "c:\\";
      openFileDialog1->Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
      openFileDialog1->FilterIndex = 2;
      openFileDialog1->RestoreDirectory = true;

      if ( openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK )
      {
         if ( (myStream = openFileDialog1->OpenFile()) != nullptr )
         {
            // Insert code to read the stream here.
            myStream->Close();
         }
      }
   }
var fileContent = string.Empty;
var filePath = string.Empty;

using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
    openFileDialog.InitialDirectory = "c:\\";
    openFileDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
    openFileDialog.FilterIndex = 2;
    openFileDialog.RestoreDirectory = true;

    if (openFileDialog.ShowDialog() == DialogResult.OK)
    {
        //Get the path of specified file
        filePath = openFileDialog.FileName;

        //Read the contents of the file into a stream
        var fileStream = openFileDialog.OpenFile();

        using (StreamReader reader = new StreamReader(fileStream))
        {
            fileContent = reader.ReadToEnd();
        }
    }
}

MessageBox.Show(fileContent, "File Content at path: " + filePath, MessageBoxButtons.OK);
Private Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim myStream As Stream = Nothing
    Dim openFileDialog1 As New OpenFileDialog()

    openFileDialog1.InitialDirectory = "c:\"
    openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
    openFileDialog1.FilterIndex = 2
    openFileDialog1.RestoreDirectory = True

    If openFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
        Try
            myStream = openFileDialog1.OpenFile()
            If (myStream IsNot Nothing) Then
                ' Insert code to read the stream here.
            End If
        Catch Ex As Exception
            MessageBox.Show("Cannot read file from disk. Original error: " & Ex.Message)
        Finally
            ' Check this again, since we need to make sure we didn't throw an exception on open.
            If (myStream IsNot Nothing) Then
                myStream.Close()
            End If
        End Try
    End If
End Sub

注解

FileDialog是包含 和 SaveFileDialog 类的常见行为的OpenFileDialog抽象类。 它不应直接使用,但包含这两个类的常见行为。 不能创建 的 FileDialog实例。 尽管类声明为公共类,但不能从它继承,因为它包含内部抽象方法。 若要创建对话框以选择或保存文件,请使用 OpenFileDialogSaveFileDialog

FileDialog 是模式对话框;因此,在显示时,它会阻止应用程序的其余部分,直到用户选择文件。 以模式方式显示对话框时,除了对话框上的对象之外,不会发生任何输入 (键盘或鼠标单击) 。 程序必须隐藏或关闭对话框 (通常响应某些用户操作) ,然后才能输入调用程序。

注意

使用派生自 FileDialog的类(如 OpenFileDialogSaveFileDialog)时,请避免使用包含绝对路径的字符串文本。 而是使用下表中所述的一种或多种技术动态获取路径。

如果希望允许用户选择文件夹而不是文件,请使用 FolderBrowserDialog

根据应用程序的类型、与应用程序关联的数据的存储方式以及访问文件系统的原因,可以通过多种方式创建目录路径。 下表显示了动态创建路径的方法。

路径或程序类别 要使用的类和成员
标准 Windows 路径,例如 Program Files、MyDocuments、Desktop 等 System.Environment 是其中最完整的源,无论是通过其静态方法(例如 ), SystemDirectory还是通过使用 GetFolderPath 枚举值之一的 Environment.SpecialFolder 方法。
与当前应用程序相关的路径 Application 具有静态成员来获取某些路径,例如 StartupPathExecutablePathLocalUserAppDataPathCommonAppDataPath

GetTempPathSystem.IO.Path 方法返回临时文件夹的路径。

GetCurrentDirectory类的 System.IO.Directory 方法返回应用程序的当前执行目录。

RootDirectory类的 DriveInfo 属性表示指定驱动器的根目录。
存储为应用程序设置的路径 访问派生自 ApplicationSettingsBase的包装类的相应应用程序设置属性。 有关详细信息,请参阅 Windows 窗体 的应用程序设置
注册表存储 某些应用程序将目录信息存储在注册表中。 类Application具有CommonAppDataPath解析为RegistryKey值的 和 LocalUserAppDataPath 属性。
ClickOnce 应用程序 对于 ClickOnce 应用程序,请使用 Application 类成员(如 UserAppDataPath),这将返回指向 ClickOnce 数据目录的指针。 有关详细信息,请参阅 在 ClickOnce 应用程序中访问本地和远程数据
国际应用程序 对于国际应用程序,请使用 System.Resources.ResourceReader 类从应用程序中的字符串资源检索相对路径部分。 有关全球化和本地化的详细信息,请参阅主题 全球化和本地化

请注意,可以使用一种或多种所述技术生成完整路径。 例如, GetFolderPath 方法可用于获取 MyDocuments 文件夹的路径,然后应用程序设置可用于添加相对子目录部分。

System.IO.Path 包含静态成员以帮助操作绝对和相对路径字符串,而 System.IO.FileSystem.IO.Directory 类则分别具有实际操作文件和目录的静态成员。

重要

如果应用程序的用户更改 中的 FileDialog文件夹,则应用程序的当前工作目录将设置为 中指定的 FileDialog位置。 若要防止出现这种情况,请将 RestoreDirectory 属性设置为 true

字段

EventFileOk

具有 FileOk 事件。

属性

AddExtension

获取或设置一个值,该值指示如果用户省略扩展名,对话框是否自动在文件名中添加扩展名。

AddToRecent

获取或设置一个值,该值指示对话框是将打开的文件还是保存到最近的列表中。

AutoUpgradeEnabled

获取或设置一个值,该值指示此 FileDialog 实例在 Windows Vista 上运行时是否应自动升级外观和行为。

CanRaiseEvents

获取一个指示组件是否可以引发事件的值。

(继承自 Component)
CheckFileExists

获取或设置一个值,该值指示如果用户指定不存在的文件名,对话框是否显示警告。

CheckPathExists

获取或设置一个值,该值指示如果用户指定不存在的路径,对话框是否显示警告。

ClientGuid

获取或设置要与此对话状态关联的 GUID。 通常情况下,状态(如最后访问的文件夹)和对话框的位置及大小将根据可执行文件的名称持久保存。 通过指定 GUID,一个应用程序对于同一应用程序中不同版本的对话框(例如,导入的对话框和打开的对话框),可以具有不同的持久状态。

如果应用程序未使用视觉样式或如果 AutoUpgradeEnabled 设置为 false,则此功能不可用。

Container

获取包含 IContainerComponent

(继承自 Component)
CustomPlaces

获取此 FileDialog 实例的自定义空间的集合。

DefaultExt

获取或设置默认文件扩展名。

DereferenceLinks

获取或设置一个值,该值指示对话框是否返回快捷方式引用的文件的位置,或者是否返回快捷方式 (.lnk) 的位置。

DesignMode

获取一个值,用以指示 Component 当前是否处于设计模式。

(继承自 Component)
Events

获取附加到此 Component 的事件处理程序的列表。

(继承自 Component)
FileName

获取或设置一个包含在文件对话框中选定的文件名的字符串。

FileNames

获取对话框中所有选定文件的文件名。

Filter

获取或设置当前文件名筛选器字符串,该字符串决定对话框的“另存为文件类型”或“文件类型”框中出现的选择内容。

FilterIndex

获取或设置文件对话框中当前选定筛选器的索引。

InitialDirectory

获取或设置文件对话框显示的初始目录。

Instance

获取应用程序的 Win32 实例句柄。

OkRequiresInteraction

获取或设置一个值,该值指示是否禁用对话框的“确定”按钮,直到用户导航视图或编辑文件名 ((如果适用) )。

Options

获取用来初始化 FileDialog 的值。

RestoreDirectory

获取或设置一个值,该值指示该对话框在关闭前是否将目录还原为之前选定的目录。

ShowHelp

获取或设置一个值,该值指示文件对话框中是否显示“帮助”按钮

ShowHiddenFiles

获取或设置一个值,该值指示对话框是否显示隐藏文件和系统文件。

ShowPinnedPlaces

获取或设置一个值,该值指示是否显示视图导航窗格中默认显示的项。

Site

获取或设置 ComponentISite

(继承自 Component)
SupportMultiDottedExtensions

获取或设置对话框是否支持显示和保存具有多个文件扩展名的文件。

Tag

获取或设置一个对象,该对象包含控件的数据。

(继承自 CommonDialog)
Title

获取或设置文件对话框标题。

ValidateNames

获取或设置一个值,该值指示对话框是否只接受有效的 Win32 文件名。

方法

CreateObjRef(Type)

创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。

(继承自 MarshalByRefObject)
Dispose()

释放由 Component 使用的所有资源。

(继承自 Component)
Dispose(Boolean)

释放由 Component 占用的非托管资源,还可以另外再释放托管资源。

(继承自 Component)
Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetLifetimeService()
已过时.

检索控制此实例的生存期策略的当前生存期服务对象。

(继承自 MarshalByRefObject)
GetService(Type)

返回一个对象,该对象表示由 Component 或它的 Container 提供的服务。

(继承自 Component)
GetType()

获取当前实例的 Type

(继承自 Object)
HookProc(IntPtr, Int32, IntPtr, IntPtr)

定义要重写的通用对话框挂钩过程,以便向文件对话框添加特定功能。

InitializeLifetimeService()
已过时.

获取生存期服务对象来控制此实例的生存期策略。

(继承自 MarshalByRefObject)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
MemberwiseClone(Boolean)

创建当前 MarshalByRefObject 对象的浅表副本。

(继承自 MarshalByRefObject)
OnFileOk(CancelEventArgs)

引发 FileOk 事件。

OnHelpRequest(EventArgs)

引发 HelpRequest 事件。

(继承自 CommonDialog)
OwnerWndProc(IntPtr, Int32, IntPtr, IntPtr)

定义要重写的所有者窗口过程,以便向通用对话框添加特定功能。

(继承自 CommonDialog)
Reset()

将所有属性重新设置为其默认值。

RunDialog(IntPtr)

指定通用对话框。

ShowDialog()

用默认的所有者运行通用对话框。

(继承自 CommonDialog)
ShowDialog(IWin32Window)

运行具有指定所有者的通用对话框。

(继承自 CommonDialog)
ToString()

提供此对象的字符串版本。

事件

Disposed

在通过调用 Dispose() 方法释放组件时发生。

(继承自 Component)
FileOk

当用户单击文件对话框中的“打开”或 “保存”按钮时发生

HelpRequest

当用户单击通用对话框中的“帮助”按钮时发生。

(继承自 CommonDialog)

适用于

另请参阅