2010-12-04 20 views
21

He leído sobre la propiedad en MSDN, pero sigo sin entender qué hace.¿Qué hace realmente la propiedad FileDialog.RestoreDirectory?

Obtiene o establece un valor que indica si el cuadro de diálogo restaura el directorio actual antes del cierre.

¿Qué significa exactamente eso? ¿Qué hace 'restaurar' el directorio actual en realidad? Gracias por la ayuda.

Respuesta

27

IIRC, en Windows XP cuando se pulse Save en un SaveFileDialog (o Open en un OpenFileDialog) del directorio donde se guarda el archivo (o abierto), se establece como el nuevo directorio de trabajo actual (el que está en Environment.CurrentDirectory).

Al establecer FileDialog.RestoreDirectory = true, cuando cierra FileDialog se restaura el directorio de trabajo original.

En Windows Vista/Seven el comportamiento siempre es como FileDialog.RestoreDirectory = true (sí, incluso si lo configura en falso ...).

+0

Gracias ** lo aclaré ** justo arriba. ¡Prestigio! –

+0

¿Qué hay de Win 8? – linquize

+0

@linquize: No tengo idea, pero apuesto a que es como Windows 7. – digEmAll

0

Cuando puede seleccionar un directorio cuando usa el cuadro de diálogo, el siguiente uso del diálogo se abrirá en el último directorio usado. El uso de esta opción restaurará el directorio original.

0

Si se establece en verdadero, el cuadro de diálogo de archivo siempre abrirá la ruta del archivo predeterminado (propiedad InitialDirectory).

5

Una peculiaridad de la implementación original fue que después de realizar su selección el directorio actual de su aplicación cambió a esa carpeta, lo que significa que si esperaba que las operaciones de archivo fueran relativas a su carpeta de aplicaciones, ahora fallaba.

Esto significaba que era una práctica común agregar código para capturar la carpeta actual antes de usar el diálogo, y restaurarlo después.

Esto se corrigió, por lo que puede hacer esto por usted, pero cambiar el comportamiento predeterminado podría haber roto el código que dependía de la peculiaridad. Por lo tanto, debe habilitarlo manualmente a través de esta propiedad.

+0

No tengo idea de lo que podría significar la frase 'después de hacer su selección, el directorio actual de su aplicación cambió a esa carpeta '. ¿Te importaría reformularlo? –

0

Aquí, estoy hablando solo de WinForms FileDialog, WPF FileDialog puede tener un comportamiento diferente.

Para Win XP, el directorio actual se cambia durante el uso del cuadro de diálogo.

Para aplicaciones de subprocesos múltiples, esto debe tenerse en cuenta. Es fácil de probar ejecutando un ciclo en un nuevo hilo para verificar si el directorio actual se cambia durante el uso del cuadro de diálogo, cuando se cambia a otra carpeta.

Para Win 7/mono, el directorio actual no se cambia durante o después de usar el cuadro de diálogo.

Por lo tanto, la propiedad Win 7/mono: RestoreDirectory no es necesaria.

Cuestiones relacionadas