2011-12-06 18 views
21

Sé que si configuro SelectedPath antes de mostrar el cuadro de diálogo, puedo obtener una carpeta abierta de forma predeterminada cuando se abre el cuadro de diálogo. Sin embargo, la carpeta que quiero usar está muy abajo en la lista alfabéticamente. Tengo la misma carpeta que una de mis Bibliotecas en Windows y aparece en el listado, ¿hay alguna forma de tenerla de forma predeterminada en la versión de la biblioteca de la carpeta en lugar de en la versión del disco duro de la carpeta?¿Es posible hacer que la ruta predeterminada de FolderBrowserDialog aparezca en una biblioteca en lugar de en el disco real?

Otra posible solución sería si todavía utilizara la versión de la unidad, pero automáticamente desplazó la ventana hacia abajo hasta donde se seleccionó. ¿Hay alguna manera de hacer cualquiera de estas soluciones?


Cómo se nota actualmente hasta

enter image description here

Cómo me gustaría que aparezca

enter image description here

+0

Si este problema se trata de auto-desplazamiento, es posible que cualquiera de los tipos ficha-tab-rightarrow, o programa, consulte http://stackoverflow.com/a/29691834/1845672 – Roland

Respuesta

6

Use una llamada Restablecer(). Esto hará que se desplace automáticamente.

 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

No funcionó para mí. La llamada 'Reset()' borra la configuración realizada en el Diseñador. – Roland

+0

Funciona para mí, gracias – monstr

0

Sólo hay que establecer la ruta de Bibliotecas \ VetCentric ... antes abres deberías hacerlo, creo.

0

La manera más fácil probablemente sea poner accesos directos a las carpetas que desee en su carpeta de inicio. Luego, solo haga doble clic en el acceso directo y lo llevará a su carpeta.

De lo contrario, tendrá que utilizar la Shell Library API Ver: Using Libraries in your Program

17

Establecer la carpeta raíz y la ruta seleccionada como tal y se auto-desplazamiento a su disposición en la apertura de diálogo:

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

enter image description here

El problema con el que se encuentra es que si observa las asignaciones de propiedades después de seleccionar una carpeta ubicada en la jerarquía de bibliotecas, aún así la asignará a la ruta genética que obtendrías al pasar por mi computadora.

+1

Interesante, mediante el diseñador de estableció el 'RootFolder' y' SelectedPath', seleccionó la carpeta y expandió el árbol, pero no se desplazó automáticamente a la ventana. Al mover esas dos líneas de código fuera del diseñador y hacia mi constructor hice que hiciera mi comportamiento deseado. ¡Gracias! –

+1

También otra nota para cualquier persona que lea esto, si selecciona una ruta, presione OK, luego abra nuevamente el cuadro de diálogo, tendrá la carpeta seleccionada pero no se desplazará automáticamente de nuevo. –

+0

@Scott Chamberlain: tal como dijo, esta solución funciona solo la primera vez que abre el Diálogo. Alguien tiene una solución mejor ? – itsho

Cuestiones relacionadas