visual openfiledialog1 open net ejemplo abrir c# .net dialog openfiledialog
https://web.archive.org/web/20180823181632/http://s3downloads.lyquidity.com/FolderSelectDialog/FolderSelectDialog.ziphttp://s3downloads.lyquidity.com/FolderSelectDialog/FolderSelectDialog.zip

net - openfiledialog1 c#



¿Cómo usar OpenFileDialog para seleccionar una carpeta? (7)

Aquí hay otra solución, que tiene toda la fuente disponible en un solo archivo ZIP simple.

Presenta OpenFileDialog con indicadores de ventanas adicionales que lo hacen funcionar como el cuadro de diálogo Selección de carpeta de Windows 7+.

Según el sitio web, es de dominio público: "No hay ninguna licencia como la que puede tomar y hacer con el código lo que quiera".

Enlaces de Archive.org:

¿Cómo usar OpenFileDialog para seleccionar carpetas?

Iba a usar el siguiente proyecto: https://github.com/scottwis/OpenFileOrFolderDialog

Sin embargo, me enfrenté a un problema. Utiliza la función OPENFILENAME y la estructura OPENFILENAME . Y OPENFILENAME tiene el miembro llamado templateID . Es el identificador de la plantilla de diálogo. Y el proyecto también contiene el archivo res1.rc y el inicio de diálogo con plantilla. Pero no pude averiguar cómo adjuntar este archivo a mi proyecto de C #.

¿Hay una mejor manera de usar un OpenFileDialog para seleccionar carpetas?


Básicamente necesitas la clase FolderBrowserDialog :

Pide al usuario que seleccione una carpeta. Esta clase no puede heredarse.

Ejemplo:

using(var fbd = new FolderBrowserDialog()) { DialogResult result = fbd.ShowDialog(); if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(fbd.SelectedPath)) { string[] files = Directory.GetFiles(fbd.SelectedPath); System.Windows.Forms.MessageBox.Show("Files found: " + files.Length.ToString(), "Message"); } }

Si trabaja en WPF , debe agregar la referencia a System.Windows.Forms .

también tiene que agregar using System.IO para la clase de Directory


Como nota para los futuros usuarios que FolderBrowserDialog evitar el uso de FolderBrowserDialog , Microsoft solía lanzar una API llamada WindowsAPICodePack que tenía un diálogo útil llamado CommonOpenFileDialog , que podría configurarse en un modo IsFolderPicker .

Si tiene acceso a paquetes nuget, todavía está disponible en las listas públicas como WindowsAPICodePack

Para la línea de inclusión:

using Microsoft.WindowsAPICodePack.Dialogs;

Uso:

CommonOpenFileDialog dialog = new CommonOpenFileDialog(); dialog.InitialDirectory = "C://Users"; dialog.IsFolderPicker = true; if (dialog.ShowDialog() == CommonFileDialogResult.Ok) { MessageBox.Show("You selected: " + dialog.FileName); }

AVISO: El paquete oficial de Microsoft Nuget ya está disponible

  • Microsoft.WindowsAPICodePack-Core
  • Microsoft.WindowsAPICodePack-Shell

Cada paquete es de Microsoft e instalará ambos.
URL del proyecto: http://code.msdn.microsoft.com/WindowsAPICodePack .

El usuario de aybe ha cargado una serie de paquetes no oficiales. La mayoría de las personas parecen confiar en él como una fuente confiable.

Esto es todo lo que necesitaba instalar para usar CommonOpenFileDialog . (Nuget maneja las dependencias)

Install-Package WindowsAPICodePack-Shell



Es extraño que tantas respuestas / votos, pero nadie agregue el siguiente código como respuesta:

using (var folderDialog = new FolderBrowserDialog()) { if (folderDialog.ShowDialog() == DialogResult.OK) { // folderDialog.SelectedPath -- your result } }


Hay una solución de pirateo que utiliza OpenFileDialog donde ValidateNames y CheckFileExists están configurados en falso y FileName recibe un valor simulado para indicar que un directorio está seleccionado.

Digo hackear porque confunde a los usuarios 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.

OpenFileDialog folderBrowser = new OpenFileDialog(); // Set validate names and check file exists to false otherwise windows will // not let you select "Folder Selection." folderBrowser.ValidateNames = false; folderBrowser.CheckFileExists = false; folderBrowser.CheckPathExists = true; // Always default to Folder Selection. folderBrowser.FileName = "Folder Selection."; if (folderBrowser.ShowDialog() == DialogResult.OK) { string folderPath = Path.GetDirectoryName(folderBrowser.FileName); // ... }