2012-01-11 68 views
5

tengo este código:OpenFileDialog InitialDirectory no funciona

OpenFileDialog dialog = new OpenFileDialog(); 
dialog.InitialDirectory = GetDataPath(...); 
dialog.AutoUpgradeEnabled = false; 
dialog.Filter = GetFilter(...); 
if (dialog.ShowDialog(this) == DialogResult.OK) 
{...} 

espero que, en cada carrera, para que el diálogo en la misma carpeta - carpeta GetDataPath (...), pero sigue siendo en la última carpeta seleccionada.

¿Es este el comportamiento correcto? ¿Sabes cómo arreglar ésto? Si Windows guarda la última ruta utilizada en el registro, ¿sabe cómo encontrarla?

EDIT1:

Con:

dialog.AutoUpgradeEnabled = true; 

funciona como se esperaba ...

Edit2: mismo problema que aquí Any known problems with getting SaveFileDialog's InitialDirectory property working in Windows 7?

+0

posible duplicado de [Configuración del directorio inicial de un SaveFileDialog?] (Http://stackoverflow.com/questions/1175242/setting-the-initial-directory-of-an-savefiledialog) –

+0

tenga en cuenta que InitialDirectory no se utiliza si tiene un FileName (s) seleccionado ... no es el caso en su código de muestra. – zeFrenchy

+0

@Cody Gray no está duplicado. Ya he probado esa solución y no está funcionando – Felics

Respuesta

3

Se puede requerir para establecer RestoreDirectory

OpenFileDialog dialog = new OpenFileDialog(); 
dialog.InitialDirectory = GetDataPath(...); 
dialog.RestoreDirectory = true; 
dialog.AutoUpgradeEnabled = false; 
dialog.Filter = GetFilter(...); 
if (dialog.ShowDialog(this) == DialogResult.OK) 
{...} 

Marque esta link

+0

El problema permanece. Ya he intentado esto antes. – Felics

1

me dieron el código para trabajar de esta manera:

dialog.InitialDirectory = Environment.ExpandEnvironmentVariables("%HOMEDRIVE%%HOMEPATH%") + "\\Videos";

-1

He estado teniendo problemas con esto también. Así es como lo solucioné:

Supongamos que bakDir es una cadena que contiene la ruta del directorio inicial que desea para su OpenFileDialog.

 OpenFileDialog openFile = new OpenFileDialog(); 
     if (!Directory.Exists(bakDir)) 
     { 
      Directory.CreateDirectory(bakDir); 
     } 
     openFile.InitialDirectory = AppDomain.CurrentDomain.BaseDirectory + @"DbBackups"; 

Y cuando haya terminado haciendo lo suyo con el archivo seleccionado, llamar a esto:

 openFile = null; 
1

Yo también he probado diferentes "soluciones" que se encuentra en diferentes lugares, pero ninguno de ellos parece funcionar tan pronto como hay una entrada en la lista MRU en el registro:/pero aquí es mi propia solución simple ...

en lugar de establecer la propiedad del diálogo InitialDirectory, establezca la propiedad FileName a su ruta, pero combinado con el seleccionado Filter, por ejemplo .:

dialog.FileName = Path.Combine(myPath, "*.*"); 
5

No incluir nombre de archivo en InitialDirectory. Sendero solo

From msdn: si InitialDirectory tiene un nombre de archivo completo en lugar de solo una ruta de directorio, el directorio inicial adoptará la ruta de la aplicación o el directorio desde el que el usuario seleccionó el archivo por última vez.

0

Tuve el mismo problema. Cuando he usado este código:

string imgPath = AppDomain.CurrentDomain.BaseDirectory + @"Images\"; 

que no muestra el directorio inicial.

Pero si me quita la barra final:

string imgPath = AppDomain.CurrentDomain.BaseDirectory + @"Images"; 

Así directorio inicial espectáculo comenzó correctamente. Restaurar barra invertida no causa show incorrecto, lo que no entiendo, pero es así.

2

para mí esas respuestas no ayudaron (windows 7).

mi camino era la siguiente: "C:/xxxx/yyyy" después de cambiar a barra invertida funcionó bien, mi camino ahora se ve así: "C: \ xxxxx \ yyyyy"

0

que tenía un problema con esto también, donde solo mostraría el último directorio utilizado. Estaba usando una ruta de red sin letra de unidad. Necesitaba agregar otra "\" delante del nombre del servidor.

Esto no funcionó:

openFileDialog1.InitialDirectory = "\\\servernam01\\group.data\\EXTERNAL PROJECTS\\VSCHART\\ercotfiles\\"; 

Pero esto no hizo el trabajo:

openFileDialog1.InitialDirectory = "\\\\servernam01\\group.data\\EXTERNAL PROJECTS\\VSCHART\\ercotfiles\\"; 
0

Esto me estaba pasando, pero el problema era diferente. Tuve un error tipográfico en el camino que estaba usando para el InitialDirectory. Cuando lo arreglé, estaba bien. Si esto está ocurriendo a usted comprobar su ventana de salida para esto:

A first chance exception of type 'System.IO.FileNotFoundException' 
occurred in System.Windows.Forms.dll 
0

En mi caso no estaba funcionando porque el 'InitialDirectory' no existía.

if (!Directory.Exists(InitialDirectory)) 
     Directory.CreateDirectory(InitialDirectory); 
0

que he probado las soluciones dadas, pero sin éxito, pero lo que funcionó para mí, es quitar los modificadores "/" de mi camino.

path = path.TrimEnd(new char[] { '\\' }); 

Entonces funciona correctamente.

Cuestiones relacionadas