En el cuadro de diálogo FileOpen o FileSave cuando los llamo, van automáticamente a la última ruta abierta. Esto sucede incluso si cierro mi aplicación y la abro. ¿Pero cómo hacer que esa ruta/nombre de archivo sea un cuadro de texto o una variable?Obtención del último archivo abierto en el cuadro de diálogo de archivo abierto
Respuesta
parece un poco weired pero en Windows 7 funciona con la folling:
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.InitialDirectory = System.Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);
Pruébalo y dime si necesita más ayuda.
Estoy tratando de obtener el valor no establecido. Necesito obtener el último nombre de archivo abierto. – Vicky
Es de suponer que la información se almacena en algún lugar en las profundidades del registro (lo hace el control no administrado al que OpenFileDialog
es solo un contenedor). Probablemente lo más fácil sea continuar la ruta la última vez que se cerró el diálogo en su aplicación en algún lugar donde pueda acceder a ella.
Pero tengo un comportamiento extraño, en la aplicación desarrollada en VB .net, el valor en el cuadro de texto se conserva incluso cuando la aplicación está cerrada, pero no en ese estado; se puede abrir en C# – Vicky
El 'OpenFileDialog' no recuerda el último nombre del archivo - solo el último directorio. – ChrisWue
ok al menos cómo obtener el nombre de directorio? – Vicky
Como se ha mencionado aquí: What does the FileDialog.RestoreDirectory Property actually do?
Utilizan el camino de Environment.CurrentDirectory
.
Tengo un problema similar al de Vicky, que dice lo siguiente. Estoy desarrollando en Visual Basic 2008 Express Edition en Vista Business SP2.
Tengo una aplicación con OpenFileDialog y SaveFileDialog. Cuando llamo a OpenFileDialog al ejecutar por primera vez la aplicación, se establece de manera predeterminada en el directorio desde el que la aplicación abrió/guardó un archivo por última vez. Sin embargo, este directorio NO ES "Environment.CurrentDirectory", que se establece en "C: \ Users \ Brian \ Documents \ Visual Studio 2008 \ Projects \ IFPM Analysis \ IFPM Analysis \ bin \ Debug" y no lo cambia ni OpenFileDialog ni SaveFileDialog.
Más adelante en la aplicación, llamo a SaveFileDialog, con la propiedad de directorio inicial (.InitialDirectory) establecida en el código en un directorio predeterminado. Cuando posteriormente llamo a OpenFileDialog, de manera predeterminada está en el directorio utilizado por SaveFileDialog. Todo el tiempo, el valor de "Environment.CurrentDirectory" no se modifica.
Entonces, mi pregunta es, ¿dónde se está almacenando el directorio que está siendo utilizado por OpenFileDialog y SaveFileDialog? Supongo que tiene algo que ver con la clase FileDialog subyacente, y sé que persiste incluso después de que la aplicación se haya cerrado y reiniciado.
Idealmente, quiero poder almacenar el directorio seleccionado por el usuario desde OpenFileDialog y reiniciarlo después de haber utilizado SaveFileDialog. Aunque puedo usar la propiedad InitialDirectory de OpenFileDialog dentro de la Aplicación, esto no me ayuda cuando cierro la Aplicación y la reinicio. Por desgracia, las acciones de los usuarios típicos son:
- Aplicación de inicio del archivo abierto
- con OpenFileDialog
- guardar el archivo con SaveFileDialog
- Solicitud licencia
Esto significa que cuando el usuario vuelve a la Aplicación, el directorio predeterminado es el "incorrecto". Sé que puedo guardar el último directorio usado de OpenFileDialog en mi propio archivo de configuración para que persista fuera de la aplicación, pero parece un poco tonto cuando Windows me proporciona la misma funcionalidad, si supiera dónde buscar. !
¡Toda ayuda recibida con gratitud!
Gracias, Brian.
Esto es exactamente lo que quiero :) Enseñé lo mismo con respecto a la idea de guardar detalles en un archivo de configuración ... – Vicky
Ahora tengo una solución. Creé una propiedad en el Objeto My.Settings llamado CurrentDirectory. Luego lo establecí explícitamente en el directorio seleccionado por el usuario cada vez que se llamaba al Diálogo de Archivo (tuve que extraerlo del nombre de archivo seleccionado). También utilicé el método .InitialDirectory de File Dialog para configurar el directorio My.Settings.CurrentDirectory. Esto persiste después de que la aplicación se ha cerrado y por lo tanto resuelve mi problema. Brian. –
Si tiene una pregunta, debe crear otra cadena, no preguntarla en las respuestas. – TheWanderingMind
La lista reciente de los archivos abiertos se almacena en 2 lugares:
- carpeta reciente: La carpeta reciente normalmente se encuentra en C: \ Documents and Settings [su perfil] \ Recent (El camino es diferente en Windows Vista) y contiene accesos directos a los archivos abiertos recientemente.
- Registro: Cada vez que se selecciona un archivo en el cuadro de diálogo Guardar caja/abierta, se añade el nombre del archivo a la lista de archivos bajo
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU
Este método puede ayudar a obtener la lista:
public static string GetLastOpenSaveFile(string extention)
{
RegistryKey regKey = Registry.CurrentUser;
string lastUsedFolder = string.Empty;
regKey = regKey.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ComDlg32\\OpenSaveMRU");
if (string.IsNullOrEmpty(extention))
extention = "html";
RegistryKey myKey = regKey.OpenSubKey(extention);
if (myKey == null && regKey.GetSubKeyNames().Length > 0)
myKey = regKey.OpenSubKey(regKey.GetSubKeyNames()[regKey.GetSubKeyNames().Length - 2]);
if (myKey != null)
{
string[] names = myKey.GetValueNames();
if (names != null && names.Length > 0)
{
lastUsedFolder = (string)myKey.GetValue(names[names.Length - 2]);
}
}
return lastUsedFolder;
}
¡Éxito! Iordan
- 1. Detectando si el diálogo de entrada de archivo está abierto
- 2. carpeta de diálogo navegador como archivo abierto de diálogo
- 3. ¿Cómo puedo mostrar solo ciertas extensiones de archivo en un cuadro de diálogo de archivo abierto?
- 4. Cómo cambiar la ruta predeterminada del diálogo de archivo abierto
- 5. Activar manualmente el 'diálogo de archivo abierto' usando plupload
- 6. Cómo obtener la ruta seleccionada y el nombre del archivo usando el control de diálogo de archivo abierto
- 7. archivo abierto Android
- 8. php abierto el archivo de Excel en el navegador
- 9. datepicker en JQuery UI El cuadro de diálogo muestra el calendario en el cuadro de diálogo abierto
- 10. Diálogo de Android, mantenga el cuadro de diálogo abierto cuando se presiona el botón
- 11. archivo abierto Vim bajo el cursor
- 12. al cerrar el archivo abierto por ConfigParser
- 13. cómo comprobar el archivo abierto sin lsof
- 14. Compruebe si el archivo ya está abierto
- 15. ¿Cómo cerrar el ARCHIVO * abierto por _wfopen?
- 16. C# ¿calcular MD5 para el archivo abierto?
- 17. XMLStreamReader no cerrar archivo XML abierto
- 18. Tamaño de un objeto de archivo abierto
- 19. Cómo tener un archivo abierto normalmente en Resharper en lugar de en el modo "Mantener abierto"
- 20. TFS 2010: Extraer archivo en abierto
- 21. Cómo leer un archivo abierto en Ruby
- 22. jquery-ui, de diálogo Uso ('abierto') y pasar una variable al cuadro de diálogo
- 23. Perl: Borrar el contenido del archivo y el archivo abierto en modo append
- 24. ¿Cómo determino el tamaño de un archivo abierto en Python?
- 25. El archivo de comprobación está abierto en Delphi
- 26. Renombre de forma programable el archivo abierto en Windows
- 27. Cómo leer el archivo abierto de Excel en C#
- 28. Blanco - Cuadro de diálogo Abrir archivo
- 29. Abrir cuadro de diálogo de archivo
- 30. ¿Cómo obtener el nombre de un archivo abierto?
Ya he probado la propiedad InitialDirectory. Pero no sirve. También necesito el último nombre de archivo abierto ... ¿qué propiedad se puede usar? – Vicky