Evaluar y enviar comentarios
Contraer todo/Expandir todo Contraer todo
Esta página es específica de
Microsoft Visual Studio 2008/.NET Framework 3.5

Hay además otras versiones disponibles para:
Biblioteca de clases de .NET Framework
FileDialog (Clase)

Actualización: noviembre 2007

Muestra un cuadro de diálogo en el que el usuario puede seleccionar un archivo.

Espacio de nombres:  System.Windows.Forms
Ensamblado:  System.Windows.Forms (en System.Windows.Forms.dll)
Visual Basic (Declaración)
Public MustInherit Class FileDialog _
    Inherits CommonDialog
Visual Basic (Uso)
Dim instance As FileDialog
C#
public abstract class FileDialog : CommonDialog
Visual C++
public ref class FileDialog abstract : public CommonDialog
J#
public abstract class FileDialog extends CommonDialog
JScript
public abstract class FileDialog extends CommonDialog

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.

8wk9scak.alert_caution(es-es,VS.90).gifPrecaució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.

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.

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. El ejemplo requiere que se haya incluido con anterioridad un formulario con un control Button y se haya agregado el espacio de nombres System.IO.

Visual Basic
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

C#
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);
        }
    }
}

Visual C++
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() == ::DialogResult::OK )
      {
         if ( (myStream = openFileDialog1->OpenFile()) != nullptr )
         {
            // Insert code to read the stream here.
            myStream->Close();
         }
      }
   }
J#
protected void button1_Click(Object sender, System.EventArgs e)
{
    Stream myStream;
    OpenFileDialog openFileDialog1 = new OpenFileDialog();
    openFileDialog1.set_InitialDirectory("c:\\");
    openFileDialog1.set_Filter(
        "txt files (*.txt)|*.txt|All files (*.*)|*.*");
    openFileDialog1.set_FilterIndex(2);
    openFileDialog1.set_RestoreDirectory(true);
    if (openFileDialog1.ShowDialog().Equals(get_DialogResult().OK)) {
        if ((myStream = openFileDialog1.OpenFile()) != null) {
            // Insert code to read the stream here.
            myStream.Close();
        }
    }
} //button1_Click
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.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Pocket PC

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 3.5, 2.0, 1.0
Contenido de la comunidad   ¿Qué es Community Content?
Agregar contenido nuevo RSS  Anotaciones
Processing
© 2012 Microsoft. Reservados todos los derechos. Términos de uso | Marcas Registradas | Privacidad
Page view tracker