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. |
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.