2011-12-06 11 views
21

So che se imposto lo SelectedPath prima di mostrare la finestra di dialogo, posso avere una cartella aperta per impostazione predefinita quando si apre la finestra di dialogo. Tuttavia, la cartella che voglio usare è molto in basso nella lista in ordine alfabetico. Ho la stessa cartella di una delle mie librerie in Windows e compare alla lista, c'è un modo per impostarla come predefinita per la versione della libreria della cartella invece della versione del disco rigido della cartella?E 'possibile mostrare un percorso predefinito di FolderBrowserDialog in una libreria invece del disco reale?

Un'altra possibile soluzione sarebbe se avesse ancora utilizzato la versione dell'unità, ma questa avrebbe fatto scorrere automaticamente la finestra verso il basso fino a dove era stata selezionata. C'è un modo per fare una di queste soluzioni?


Come attualmente presenta

enter image description here

Come vorrei che a presentarsi

enter image description here

+0

Se il problema è di circa scorrimento automatico, si potrebbe sia di tipo tab-tab-rightarrow, o un programma, vedere http://stackoverflow.com/a/29691834/1845672 – Roland

risposta

6

Utilizzare una chiamata Reset(). Questo lo farà scorrere automaticamente.

 string prevpath = folderBrowserDialog1.SelectedPath; 
     folderBrowserDialog1.Reset(); 
     folderBrowserDialog1.SelectedPath = bc.myWorkingDir; 
     folderBrowserDialog1.ShowNewFolderButton = true; 

     DialogResult dr = folderBrowserDialog1.ShowDialog(); 
     if (dr == DialogResult.OK || dr == DialogResult.Yes) 
     { 
      bc.myWorkingDir = folderBrowserDialog1.SelectedPath; 
     } 
     folderBrowserDialog1.SelectedPath = prevpath; 
+0

Non ha funzionato per me. La chiamata 'Reset()' cancella le impostazioni effettuate in Designer. – Roland

+0

Funziona per me, thx – monstr

0

Basta impostare il percorso Librerie \ VetCentric ... prima tu apri dovrebbe farlo credo.

0

Il modo più semplice sarebbe probabilmente quello di mettere i collegamenti alle cartelle che si desidera nella cartella di partenza. Quindi, fai doppio clic sul collegamento e ti porterà nella tua cartella.

caso contrario, sarà necessario utilizzare il Shell Library API Sede: Using Libraries in your Program

17

Impostare la cartella principale e il percorso selezionato in quanto tale, e si auto-scroll lì per voi nella finestra di dialogo di apertura:

FolderBrowserDialog dlg = new FolderBrowserDialog(); 
dlg.RootFolder = Environment.SpecialFolder.MyComputer; 
dlg.SelectedPath = @"E:\Vetcentric"; 
dlg.ShowDialog(); 

enter image description here

Il problema che si verifica è che se si guardano le assegnazioni di proprietà dopo aver selezionato una cartella situata nella gerarchia delle librerie, la assegnerà comunque al percorso generico che otterresti passando attraverso il mio computer.

+1

Interessante, utilizzando il progettista a impostare 'RootFolder' e' SelectedPath' ha selezionato la cartella e espanso l'albero, ma non si è spostato automaticamente alla finestra. Spostare quelle due linee di codice dal progettista e nel mio costruttore ha reso possibile il comportamento desiderato. Grazie! –

+1

Un'altra nota a chiunque stia leggendo questo, Se si seleziona un percorso, premere OK, quindi aprire nuovamente la finestra di dialogo avrà la cartella selezionata ma non si auto-scrollerà nuovamente. –

+0

@Scott Chamberlain: come hai detto tu, questa soluzione funziona solo per la prima volta che apri la finestra di dialogo. Qualcuno ha una soluzione migliore? – itsho

Problemi correlati