2012-01-11 12 views
5

ho questo codice:OpenFileDialog InitialDirectory non funziona

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

mi aspetto, ad ogni corsa, per avere la finestra di dialogo nella stessa cartella - GetDataPath (...) la cartella, ma rimane in ultima cartella selezionata.

È questo il comportamento corretto? Sai come aggiustarlo? Se Windows salva ultimo percorso utilizzato nel registro sai come trovarlo?

Edit1:

Con:

dialog.AutoUpgradeEnabled = true; 

funziona come previsto ...

EDIT2: stesso problema, come qui Any known problems with getting SaveFileDialog's InitialDirectory property working in Windows 7?

+0

possibile duplicato [Impostazione della directory iniziale di un SaveFileDialog?] (Http://stackoverflow.com/questions/1175242/setting-the-initial-directory-of-an-savefiledialog) –

+0

nota che InitialDirectory non viene utilizzato se hai uno o più nomi di file selezionati ... non è il caso del tuo codice di esempio. – zeFrenchy

+0

@Cody Gray non è duplicato. Ho già provato questa soluzione e non funziona. – Felics

risposta

3

Si può richiedere di impostare RestoreDirectory

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

Scegli questa link

+0

Il problema resti. L'ho già provato prima. – Felics

1

ho ottenuto il codice per lavorare in questo modo:

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

-1

Ho avuto problemi con questo anche. Ecco come ho riparato:

supponga bakDir è una stringa contenente il percorso della directory iniziale si desidera per l'OpenFileDialog.

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

E quando hai finito il tuo cosa fare con il file selezionato, chiamare questo:

 openFile = null; 
1

Anch'io ho provato "soluzioni" diverse si trovano in luoghi diversi, ma nessuno di loro sembra funzionare non appena c'è un'entry list MRU nel registro di sistema:/ma qui è la mia soluzione semplice ...

Invece di impostare proprietà della finestra di dialogo InitialDirectory, impostare la proprietà FileName al percorso, ma combinato con la scelta Filter, ad esempio

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

Non includere il nome file in InitialDirectory. Solo percorso.

From msdn: in Windows Vista, se InitialDirectory è impostato su un nome file completo anziché solo su un percorso di directory, la directory iniziale verrà impostata come predefinita sul percorso dell'applicazione o nella directory da cui l'utente ha selezionato per l'ultima volta un file.

0

Ho avuto lo stesso problema. Quando ho usato questo codice:

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

che non mostra la directory iniziale.

Ma se ho rimosso la barra finale:

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

Così cominciarono correttamente spettacolo directory iniziale. Ripristinare il backslash non causa lo show errato, cosa non capisco, ma è così.

2

per me quelle risposte non ha aiutato (Windows 7).

il mio percorso si presentava così: "C:/xxxx/yyyyy" dopo il passaggio a backslash ha funzionato bene, il mio percorso ora si presenta così: "C: \ xxxxx \ yyyyy"

0

Ho avuto un problema con questo anche dove mostrerebbe solo l'ultima directory usata. Stavo usando un percorso di rete senza nessuna lettera di unità. Avevo bisogno di aggiungere un altro "\" davanti al nome del server.

Questo non ha funzionato:

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

Ma questo ha funzionato:

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

Questo stava accadendo a me, ma il problema era diverso. Ho avuto un refuso nel percorso che stavo usando per il InitialDirectory. Quando ho risolto ciò, stavo bene. Se questo sta accadendo a voi controllare la finestra di output per questo:

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

Nel mio caso non funzionava perché il 'InitialDirectory' non esisteva.

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

ho provato le soluzioni presentate, ma senza successo, ma che cosa ha funzionato per me, è quello di rimuovere il trailing "/" dalla mia strada.

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

Quindi funziona correttamente.

Problemi correlati