¿Cómo usar OpenFileDialogpara seleccionar carpetas?
Iba a usar el siguiente proyecto: https://github.com/scottwis/OpenFileOrFolderDialog
Sin embargo, me enfrenté a un problema. Utiliza la GetOpenFileNamefunción y la OPENFILENAMEestructura. Y OPENFILENAMEtiene el miembro nombrado templateID. Es el identificador para la plantilla de diálogo. Y el proyecto contiene el res1.rcarchivo y el diálogo de inicio de plantilla también. Pero no pude descubrir cómo adjuntar este archivo a mi proyecto C #.
¿Hay una mejor manera de usar un OpenFileDialogpara seleccionar carpetas?
c#
.net
dialog
openfiledialog
Yun
fuente
fuente

ValidateNamesyCheckFileExistsson establecen en falso yFileNamese le da un valor simulada para indicar que se ha seleccionado un directorio. Digo hackear porque confunde a los usuarios sobre cómo seleccionar una carpeta. Consulte Seleccionar archivo o carpeta desde el mismo cuadro de diálogoValidateNamesyCheckFileExistsquefalseno estaba trabajando, tenía que ponerlos a0(o aprender PowerShell mejor)Respuestas:
Básicamente necesitas la
FolderBrowserDialogclase:Ejemplo:
Si trabaja en WPF , debe agregar la referencia
System.Windows.Forms.también tienes que agregar
using System.IOpara laDirectoryclasefuente
new CommonOpenFileDialog { IsFolderPicker = true }.Como una nota para los futuros usuarios que deseen evitar el uso
FolderBrowserDialog, Microsoft una vez lanzó una API llamada WindowsAPICodePack que tenía un diálogo útil llamadoCommonOpenFileDialog, que podría establecerse en unIsFolderPickermodo. La API está disponible de Microsoft como un paquete NuGet .Esto es todo lo que necesitaba para instalar y usar el
CommonOpenFileDialog. (NuGet manejó las dependencias)Para la línea de inclusión:
Uso:
fuente
Microsoft.WindowsAPICodePack.Shellpaquete a través de NuGet antes de poder usar estoCommonOpenFileDialog.FolderBrowserDialogusuarios: el uso de varias instancias simultáneas puede crear problemas. EstoCommonOpenFileDialoges mejorWindowsAPICodePack-ShellHay una solución pirata que usa
OpenFileDialogwhereValidateNamesyCheckFileExistsse establece en false yFileNamese le asigna un valor simulado para indicar que se ha seleccionado un directorio.Digo hackear porque confunde a los usuarios sobre cómo seleccionar una carpeta. Deben estar en la carpeta deseada y luego presionar Abrir mientras el nombre del archivo dice "Selección de carpeta".
Esto se basa en Seleccionar archivo o carpeta del mismo cuadro de diálogo por Denis Stankovski.
fuente
Folder Selection.agregará al final del nombre del archivo de la siguiente manera:C:\Folder Selection.supongo que siempre puedes eliminar esos caracteres de la cadena. Todavía se ve mejor que el FolderBrowserDialogOpenbotón principal del cuadro de diálogo no funciona como se esperaba! ¡porque saltas a la carpeta anterior! pero funciona cuando solo hace doble clic en las carpetas para seleccionarlas o selecciona algunos archivos dentro de cada carpeta (si hay algún archivo que pueda elegir)Es extraño que haya tantas respuestas / votos, pero nadie agrega el siguiente código como respuesta:
fuente
Me parece que estás justo después del FolderBrowserDialog .
fuente
Aquí hay otra solución, que tiene toda la fuente disponible en un único archivo ZIP simple.
Presenta OpenFileDialog con indicadores adicionales de Windows que lo hacen funcionar como el diálogo de Selección de Carpeta de Windows 7+.
Según el sitio web, es de dominio público: "No hay licencia como tal, ya que es libre de tomar y hacer con el código lo que quiera".
Enlaces de Archive.org:
fuente
Eche un vistazo a las bibliotecas Ookii Dialogs que tienen una implementación de un diálogo de carpeta para Windows Forms y WPF respectivamente.
fuente
esta debería ser la forma más obvia y directa
fuente
FolderBrowserDialogya se ha ofrecido aquí varias veces, y es la respuesta incorrecta. Es una interfaz obsoleta y muy poco amigable para el usuario. Se usaSHBrowseForFolderdebajo, e incluso los documentos dicen "Para Windows Vista o posterior, se recomienda usarIFileDialogcon laFOS_PICKFOLDERSopción en lugar de laSHBrowseForFolderfunción. Esto usa el cuadro de diálogo Abrir archivos en el modo de selección de carpetas y es la implementación preferida".