Saltar al contenido

¿Cómo usar OpenFileDialog para seleccionar una carpeta?

Solución:

Básicamente necesitas el FolderBrowserDialog clase:

Solicita 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 trabajas en WPF tienes que agregar la referencia a System.Windows.Forms.

también tienes que agregar using System.IO por Directory clase

Como nota para los futuros usuarios que deseen evitar el uso FolderBrowserDialog, Microsoft lanzó una vez una API llamada WindowsAPICodePack que tenía un cuadro de diálogo útil llamado CommonOpenFileDialog, que podría establecerse en un IsFolderPicker modo. La API está disponible en Microsoft como paquete NuGet.

Esto es todo lo que necesitaba para instalar y usar el CommonOpenFileDialog. (NuGet manejó las dependencias)

Install-Package Microsoft.WindowsAPICodePack-Shell

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);
}

Hay una solución pirata que usa OpenFileDialog dónde ValidateNames y CheckFileExists ambos se establecen en falso y FileName recibe un valor simulado para indicar que se ha seleccionado un directorio.

Digo piratear porque a los usuarios les resulta confuso 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”.

Cuadro de diálogo de selección de carpeta de C #

Esto se basa en Seleccionar archivo o carpeta del mismo cuadro de diálogo de 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);
    // ...
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *