2009-05-10 7 views
90

¿Hay alguna manera de establecer el directorio inicial de un diálogo del buscador de carpetas en una carpeta no especial? Esto es lo que estoy usando actualmente Establecer la ubicación de inicio del diálogo del navegador de carpetas

fdbLocation.RootFolder = Environment.SpecialFolder.Desktop;
, pero quiero usar una ruta que he almacenado en una cadena como esta
fdbLocation.RootFolder = myFolder;
Esto provoca un error "No se puede convertir 'cadena' a 'System.Environment.SpecialFolder'".

Respuesta

144

acaba de establecer la SelectedPath propiedad antes de llamar a ShowDialog.

fdbLocation.SelectedPath = myFolder; 
+9

Tenga en cuenta que es necesario para establece 'RootFolder' en' Environment.SpecialFolder.Desktop' o puede que esto no funcione. –

+1

Vea la respuesta Chad Grants a continuación: explica correctamente que RootFolder debe estar configurado, y SelectedPath debe estar * debajo * de RootFolder para poder funcionar. –

+1

Esto funciona para mí, pero no establece el foco en la carpeta. Debo desplazarme manualmente hacia abajo y encontrar la carpeta por defecto. ¿Hay alguna manera de configurarlo automáticamente cuando se muestra? – JoBaxter

22
fldrDialog.SelectedPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) 

"Si la propiedad SelectedPath se establece antes de mostrar el cuadro de diálogo, la carpeta con este camino será la carpeta seleccionada, siempre y cuando SelectedPath se establece en una ruta absoluta que es una subcarpeta de RootFolder (o más exactamente, apunta a una subcarpeta del espacio de nombres del shell representado por RootFolder). "

MSDN - SelectedPath

"El método GetFolderPath devuelve los lugares asociados con esta enumeración. Las localizaciones de estas carpetas pueden tener valores diferentes en diferentes sistemas operativos, el usuario puede cambiar algunos de los lugares, y el las ubicaciones están localizadas ".

Re: Escritorio vs desktopDirectory

escritorio

"La lógica de escritorio en lugar de la ubicación del sistema de archivos físicos."

desktopDirectory:

"El directorio utilizado para almacenar físicamente objetos Guardar archivo en el escritorio Haga no confundir este directorio con la carpeta escritorio en sí, que es una carpeta virtual .. "

MSDN - Special Folder Enum

MSDN - GetFolderPath

+0

Para trayectos especiales que puede hacer fldrDialog.RootFolder {{}} = Environment.SpecialFolder.DesktopDirectory – mayu

+0

perfecto. Gracias. La clave es que SelectedPath debe estar debajo de RootFolder si el cuadro de diálogo debe apuntar a SelectedPath cuando se abre. –

+0

Comportamiento como está: 'Environment.GetFolderPath (Environment.SpecialFolder.DesktopDirectory)' devuelve _C: \ Users \ Myusername \ Desktop._ Usando *** Impersonate code *** (con LogonType LOGON32_LOGON_INTERACTIVE) returns _empty string_ – Kiquenet

25

establecer la propiedad SelectedPath antes de llamar ShowDialog ...

folderBrowserDialog1.SelectedPath = @"c:\temp\"; 
folderBrowserDialog1.ShowDialog(); 

comenzará ellos en C: \ Temp

+0

Es necesario para establecer *** RootFolder *** ('SelectedPath se establece en una ruta absoluta que es una subcarpeta de RootFolder')? Comportamiento como está: 'Environment.GetFolderPath (Environment.SpecialFolder.DesktopDirectory)' devuelve _C: \ Users \ Myusername \ Desktop._ Usando *** Impersonate code *** (con LogonType LOGON32_LOGON_INTERACTIVE) devuelve _empty string_ – Kiquenet

8

Para establecer la ruta del directorio seleccionado y el recuperar el nuevo directorio:

dlgBrowseForLogDirectory.SelectedPath = m_LogDirectory; 
if (dlgBrowseForLogDirectory.ShowDialog() == DialogResult.OK) 
{ 
    txtLogDirectory.Text = dlgBrowseForLogDirectory.SelectedPath; 
} 
Cuestiones relacionadas