2011-12-06 9 views
21

Wiem, że jeśli ustawię SelectedPath przed wyświetleniem okna dialogowego, mogę go otworzyć, aby domyślnie otworzyć folder. Jednak folder, którego chcę użyć, znajduje się bardzo daleko w kolejności alfabetycznej. Mam ten sam folder, co jedna z moich bibliotek w Windows i pojawia się na liście, czy istnieje jakiś sposób, aby ustawić ją domyślnie na wersję biblioteczną folderu zamiast na wersję dysku twardego?Czy można utworzyć domyślną ścieżkę folderu FolderBrowserDialog w bibliotece zamiast na dysku rzeczywistym?

Innym potencjalnym rozwiązaniem byłoby, gdyby nadal używało wersji napędu, ale automatycznie przewijało okno w dół do miejsca, w którym zostało wybrane. Czy jest jakiś sposób na wykonanie któregoś z tych rozwiązań?


Jak obecnie przedstawia się

enter image description here

Jak chciałbym go pokazać się

enter image description here

+0

Jeśli ten problem dotyczy automatycznego przewijania, możesz albo typ tab-tab-rightarrow lub Program ten można znaleźć http://stackoverflow.com/a/29691834/1845672 – Roland

Odpowiedz

6

Użyj funkcji resetowania(). Spowoduje to automatyczne przewijanie.

 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

Nie działa dla mnie. Wywołanie funkcji "Resetuj()" usuwa ustawienia wprowadzone w programie Designer. – Roland

+0

To działa dla mnie, thx – monstr

0

Wystarczy ustawić ścieżkę biblioteki \ VetCentric ... zanim przystąpią otwierasz, powinien to zrobić, myślę.

0

Najprostszym sposobem jest prawdopodobnie umieszczenie skrótów do folderów, które chcesz, do folderu początkowego. Następnie kliknij dwukrotnie skrót i przeniesie Cię do folderu.

W przeciwnym razie trzeba będzie użyć Shell Library API zobacz: Using Libraries in your Program

17

Ustaw folder główny i wybiera ścieżkę jako takie i będzie auto-scroll tam dla ciebie na otwarciu dialogowym:

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

enter image description here

Problem polega na tym, że jeśli oglądasz przypisanie właściwości po wybraniu folderu znajdującego się w hierarchii bibliotek, nadal będzie on przypisywał do genereicznej ścieżki, którą otrzymasz, przechodząc przez mój komputer.

+1

Ciekawe, za pomocą projektanta ustaw "Folder Root" i "SelectedPath", który wybrał folder i rozwinął drzewo, ale nie przeszło automatycznie do okna. Przeniesienie tych dwóch linii kodu z projektanta i do mojego konstruktora sprawiło, że wykonałem pożądane zachowanie. Dzięki! –

+1

Kolejna wiadomość dla każdego, kto to czyta: Jeśli wybierzesz ścieżkę, naciśnij OK, a następnie ponownie otwórz okno dialogowe, aby wybrać folder, ale nie będzie on automatycznie przewijany ponownie. –

+0

@Scott Chamberlain: tak jak powiedziałeś, to rozwiązanie działa tylko przy pierwszym otwarciu okna dialogowego. Czy ktoś ma lepsze rozwiązanie? – itsho

Powiązane problemy