.NET Framework Class Library FileDialog Class Updated: October 2010 Displays a dialog box from which the user can select a file.

Inheritance Hierarchy
Namespace:
System.Windows.Forms
Assembly:
System.Windows.Forms (in System.Windows.Forms.dll)

Syntax
Public MustInherit Class FileDialog _
Inherits CommonDialog
public abstract class FileDialog : CommonDialog
public ref class FileDialog abstract : public CommonDialog
[<AbstractClass>]
type FileDialog =
class
inherit CommonDialog
end
The FileDialog type exposes the following members.

Methods

Fields

Remarks
FileDialog is an abstract class that contains common behavior for the OpenFileDialog and SaveFileDialog classes. It is not intended to be used directly but contains common behavior for those two classes. You cannot create an instance of FileDialog. Although the class is declared public, you cannot inherit from it, as it contains internal abstract methods. To create a dialog box to select or save a file, use OpenFileDialog or SaveFileDialog.
FileDialog is a modal dialog box; therefore, when shown, it blocks the rest of the application until the user has chosen a file. When a dialog box is displayed modally, no input (keyboard or mouse click) can occur except to objects on the dialog box. The program must hide or close the dialog box (usually in response to some user action) before input to the calling program can occur. Caution |
|---|
When you use classes derived from FileDialog, such as OpenFileDialog and SaveFileDialog, avoid using string literals containing absolute paths. Instead, dynamically obtain the path using one or more of the techniques described in the following table. |
If you want to enable users to select a folder instead of a file, use the FolderBrowserDialog. Depending upon the type of application, how data associated with the application is stored, and the reason for accessing the file system, there are many possible ways in which you can create a directory path. The following table shows the techniques for creating paths dynamically. Path or program category | Class and members to use |
|---|
Standard Windows paths, such as Program Files, MyDocuments, the Desktop and so on | The System..::.Environment class is the most complete source for these, either through its static methods, such as SystemDirectory, or through the GetFolderPath method, using one of the Environment..::.SpecialFolder enumerated values. | Paths related to the current application | The Application class has static members to obtain certain paths, such as StartupPath, ExecutablePath, LocalUserAppDataPath, and CommonAppDataPath. The GetTempPath method of the System.IO..::.Path returns the path of the temporary folder. The GetCurrentDirectory method of the System.IO..::.Directory class returns the application's current executing directory. The RootDirectory property of the DriveInfo class represents the specified drive's root directory. | Paths stored as application settings | Access the corresponding applications settings property of the wrapper class derived from ApplicationSettingsBase. For more information, see Application Settings for Windows Forms. | Registry storage | Some applications store directory information in the registry. The Application class has the CommonAppDataPath and LocalUserAppDataPath properties that resolve to a RegistryKey value. | ClickOnce applications | For ClickOnce applications, use Application class members such as UserAppDataPath, which will return a pointer to the ClickOnce data directory. For more information, see Accessing Local and Remote Data in ClickOnce Applications. | International applications | For international applications, retrieve the relative path portion from a string resource in your application by using the System.Resources..::.ResourceReader class. For more information about globalization and localization, see the topic Encoding and Localization. |
Notice that a full path may be built up using one or more of the described techniques. For example, the GetFolderPath method might be used to obtain the path to the MyDocuments folder, then an application setting may be used to add a relative subdirectory portion. The System.IO..::.Path class contains static members to assist in manipulating absolute and relative path strings, whereas the System.IO..::.File and System.IO..::.Directory classes have static members that actually manipulate files and directories, respectively. Important |
|---|
If the user of your application changes the folder in the FileDialog, then the current working directory for your application is set to the location specified in the FileDialog. To prevent this, set the RestoreDirectory property to true. |

Examples
The following code example uses the OpenFileDialog implementation of FileDialog and illustrates creating, setting of properties, and showing the dialog box. The example uses the ShowDialog method to display the dialog box and return the DialogResult. The example requires a form with a Button placed on it and the System.IO namespace added to it.
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
private void button1_Click(object sender, System.EventArgs e)
{
Stream myStream = null;
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = "c:\\" ;
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
openFileDialog1.FilterIndex = 2 ;
openFileDialog1.RestoreDirectory = true ;
if(openFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
if ((myStream = openFileDialog1.OpenFile()) != null)
{
using (myStream)
{
// Insert code to read the stream here.
}
}
}
catch (Exception ex)
{
MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
}
}
}
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();
}
}
}

Version Information
.NET FrameworkSupported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0 .NET Framework Client ProfileSupported in: 4, 3.5 SP1

Platforms
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role not supported), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Thread Safety
Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

See Also

Change History
|
Biblioteca de clases de .NET Framework FileDialog (Clase) Muestra un cuadro de diálogo en el que el usuario puede seleccionar un archivo.

Jerarquía de herencia
Espacio de nombres:
System.Windows.Forms
Ensamblado:
System.Windows.Forms (en System.Windows.Forms.dll)

Sintaxis
Public MustInherit Class FileDialog _
Inherits CommonDialog
public abstract class FileDialog : CommonDialog
public ref class FileDialog abstract : public CommonDialog
[<AbstractClass>]
type FileDialog =
class
inherit CommonDialog
end
El tipo FileDialog expone los siguientes miembros.

Métodos

Campos

Comentarios
La clase FileDialog es una clase abstracta que contiene las funciones comunes de las clases OpenFileDialog y SaveFileDialog. Esta clase no se ha diseñado para que se utilice directamente, sino para que contenga el funcionamiento común de estas dos clases. No se puede crear una instancia de FileDialog. Aunque la clase se declara como pública, no se puede heredar de ella, dado que contiene métodos abstractos internos. Para crear un cuadro de diálogo en el que el usuario pueda seleccionar o guardar un archivo, utilice OpenFileDialog o SaveFileDialog.
FileDialog es un cuadro de diálogo modal; por lo tanto, al mostrarse, bloquea el resto de la aplicación hasta que el usuario haya elegido un archivo. Al mostrar un cuadro de diálogo en forma modal, es posible que no se produzca ninguna entrada de datos (mediante teclado o con el mouse), salvo en los objetos del propio cuadro de diálogo. El programa debe ocultar o cerrar el cuadro de diálogo (normalmente, en respuesta a alguna acción del usuario) antes de admitir la entrada de datos en el programa de llamada. Precaución |
|---|
Cuando utilice clases derivadas de FileDialog, como OpenFileDialog y SaveFileDialog, evite utilizar literales de cadena que contengan rutas de acceso absolutas. En su lugar, obtenga dinámicamente la ruta de acceso utilizando una o varias de las técnicas descritas en la tabla siguiente. |
Si desea permitir a los usuarios seleccionar una carpeta en lugar de un archivo, utilice FolderBrowserDialog. En función del tipo de aplicación, del modo en que los datos asociados a la aplicación están almacenados y del motivo de acceso al sistema de archivos, existen numerosos mecanismos posibles para crear una ruta de acceso a un directorio. En la tabla siguiente se muestran las técnicas para crear dinámicamente rutas de acceso. Ruta de acceso o categoría de programa | Clase y miembros que se van a utilizar |
|---|
Rutas de acceso estándar de Windows, como Archivos de programa, Mis documentos, Escritorio, etc. | La clase System..::.Environment es el origen más completo de estos elementos, ya sea a través de sus métodos estáticos, como SystemDirectory, o a través del método GetFolderPath, que utiliza uno de los valores enumerados de Environment..::.SpecialFolder. | Rutas de acceso relativas a la aplicación actual | La clase Application tiene miembros estáticos que van a obtener ciertas rutas de acceso, como StartupPath, ExecutablePath, LocalUserAppDataPath y CommonAppDataPath. El método GetTempPath de la clase System.IO..::.Path devuelve la ruta de acceso de la carpeta temporal. El método GetCurrentDirectory de la clase System.IO..::.Directory devuelve el directorio en ejecución actual de la aplicación. La propiedad RootDirectory de la clase DriveInfo representa el directorio raíz de la unidad especificada. | Rutas de acceso almacenadas como valores de la aplicación | Obtiene acceso a la propiedad de configuración de aplicaciones correspondiente de la clase contenedora derivada de ApplicationSettingsBase. Para obtener más información, vea Configuración de la aplicación en formularios Windows Forms. | Almacenamiento del Registro | Algunas aplicaciones almacenan información de los directorios en el Registro. La clase Application tiene las propiedades CommonAppDataPath y LocalUserAppDataPath que se resuelven como un valor RegistryKey. | Aplicaciones ClickOnce | En las aplicaciones ClickOnce, utilice los miembros de clase Application, como UserAppDataPath, que devolverá un puntero al directorio de datos ClickOnce. Para obtener más información, vea Obtener acceso local o remoto a los datos en aplicaciones ClickOnce. | Aplicaciones internacionales | En las aplicaciones internacionales, recupere la parte de la ruta de acceso relativa de un recurso de cadena de la aplicación mediante la clase System.Resources..::.ResourceReader. Para obtener más información sobre globalización y localización, vea el tema Codificación y localización. |
Tenga en cuenta que una ruta de acceso completa se puede crear utilizando una o varias de las técnicas descritas. Por ejemplo, el método GetFolderPath se podría utilizar para obtener la ruta de acceso a la carpeta Mis documentos, y un valor de la aplicación se podría utilizar para agregar una parte del subdirectorio correspondiente. La clase System.IO..::.Path contiene miembros estáticos que facilitan la manipulación de cadenas de ruta de acceso absolutas y relativas, mientras que las clases System.IO..::.File y System.IO..::.Directory tienen miembros estáticos que en realidad manipulan archivos y directorios, respectivamente. Importante |
|---|
Si el usuario de la aplicación cambia la carpeta de FileDialog el directorio de trabajo actual para la aplicación se establece en la ubicación especificada en FileDialog. Para evitarlo, establezca la propiedad RestoreDirectory en true. |

Ejemplos
En el siguiente ejemplo se utiliza la implementación OpenFileDialog de FileDialog y se ilustra la creación, el establecimiento de propiedades y la presentación del cuadro de diálogo. En el ejemplo se utiliza el método ShowDialog para mostrar el cuadro de diálogo y devolver DialogResult. En el ejemplo se requiere un formulario con un objeto Button colocado en él y el espacio de nombres System.IO agregado al mismo.
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
private void button1_Click(object sender, System.EventArgs e)
{
Stream myStream = null;
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = "c:\\" ;
openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" ;
openFileDialog1.FilterIndex = 2 ;
openFileDialog1.RestoreDirectory = true ;
if(openFileDialog1.ShowDialog() == DialogResult.OK)
{
try
{
if ((myStream = openFileDialog1.OpenFile()) != null)
{
using (myStream)
{
// Insert code to read the stream here.
}
}
}
catch (Exception ex)
{
MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
}
}
}
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();
}
}
}

Información de versión
.NET FrameworkCompatible con: 4, 3.5, 3.0, 2.0, 1.1, 1.0 .NET Framework Client ProfileCompatible con: 4, 3.5 SP1

Plataformas
Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2
.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Seguridad para subprocesos
Todos los miembros static ( Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Vea también

Historial de cambios
Fecha | Historial | Motivo |
|---|
Octubre de 2010 | Agregado vínculo a FolderBrowserDialog. |
Comentarios de los clientes.
|
|