FileDialog 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
显示一个用户可从中选择文件的对话框窗口。
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实例。 尽管类声明为公共类,但不能从它继承,因为它包含内部抽象方法。 若要创建对话框以选择或保存文件,请使用 OpenFileDialog 或 SaveFileDialog。
FileDialog 是模式对话框;因此,在显示时,它会阻止应用程序的其余部分,直到用户选择文件。 以模式方式显示对话框时,除了对话框上的对象之外,不会发生任何输入 (键盘或鼠标单击) 。 程序必须隐藏或关闭对话框 (通常响应某些用户操作) ,然后才能输入调用程序。
注意
使用派生自 FileDialog的类(如 OpenFileDialog 和 SaveFileDialog)时,请避免使用包含绝对路径的字符串文本。 而是使用下表中所述的一种或多种技术动态获取路径。
如果希望允许用户选择文件夹而不是文件,请使用 FolderBrowserDialog。
根据应用程序的类型、与应用程序关联的数据的存储方式以及访问文件系统的原因,可以通过多种方式创建目录路径。 下表显示了动态创建路径的方法。
路径或程序类别 | 要使用的类和成员 |
---|---|
标准 Windows 路径,例如 Program Files、MyDocuments、Desktop 等 | 类 System.Environment 是其中最完整的源,无论是通过其静态方法(例如 ), SystemDirectory还是通过使用 GetFolderPath 枚举值之一的 Environment.SpecialFolder 方法。 |
与当前应用程序相关的路径 | 类 Application 具有静态成员来获取某些路径,例如 StartupPath、 ExecutablePath、 LocalUserAppDataPath和 CommonAppDataPath。 GetTempPath的 System.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.File 和 System.IO.Directory 类则分别具有实际操作文件和目录的静态成员。
重要
如果应用程序的用户更改 中的 FileDialog文件夹,则应用程序的当前工作目录将设置为 中指定的 FileDialog位置。 若要防止出现这种情况,请将 RestoreDirectory 属性设置为 true
。
字段
EventFileOk |
具有 FileOk 事件。 |
属性
AddExtension |
获取或设置一个值,该值指示如果用户省略扩展名,对话框是否自动在文件名中添加扩展名。 |
AddToRecent |
获取或设置一个值,该值指示对话框是将打开的文件还是保存到最近的列表中。 |
AutoUpgradeEnabled |
获取或设置一个值,该值指示此 FileDialog 实例在 Windows Vista 上运行时是否应自动升级外观和行为。 |
CanRaiseEvents |
获取一个指示组件是否可以引发事件的值。 (继承自 Component) |
CheckFileExists |
获取或设置一个值,该值指示如果用户指定不存在的文件名,对话框是否显示警告。 |
CheckPathExists |
获取或设置一个值,该值指示如果用户指定不存在的路径,对话框是否显示警告。 |
ClientGuid |
获取或设置要与此对话状态关联的 GUID。 通常情况下,状态(如最后访问的文件夹)和对话框的位置及大小将根据可执行文件的名称持久保存。 通过指定 GUID,一个应用程序对于同一应用程序中不同版本的对话框(例如,导入的对话框和打开的对话框),可以具有不同的持久状态。 如果应用程序未使用视觉样式或如果 AutoUpgradeEnabled 设置为 |
Container |
获取包含 IContainer 的 Component。 (继承自 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 | (继承自 Component) |
SupportMultiDottedExtensions |
获取或设置对话框是否支持显示和保存具有多个文件扩展名的文件。 |
Tag |
获取或设置一个对象,该对象包含控件的数据。 (继承自 CommonDialog) |
Title |
获取或设置文件对话框标题。 |
ValidateNames |
获取或设置一个值,该值指示对话框是否只接受有效的 Win32 文件名。 |
方法
事件
Disposed |
在通过调用 Dispose() 方法释放组件时发生。 (继承自 Component) |
FileOk |
当用户单击文件对话框中的“打开”或 “保存”按钮时发生。 |
HelpRequest |
当用户单击通用对话框中的“帮助”按钮时发生。 (继承自 CommonDialog) |