FolderBrowserDialog嵌套文件夹

时间:2014-01-09 13:24:54

标签: c# folderbrowserdialog

我有一个文件夹。该文件夹中有多个文件夹,每个文件夹中都有一个图像。像这样:

Main Folder>Subfolder 1>Picture 1

Main Folder>Subfolder 2>Picture 2

我想使用FolderBrowserDialog选择主文件夹,并以某种方式显示子文件夹中的所有图片(图片1,图片2等)这是否可以FolderBrowserDialog?如果没有,我怎么能这样做?感谢

3 个答案:

答案 0 :(得分:2)

是的,但是FolderBrowserDialog只是解决方案的一部分。它可能看起来像这样:

using (var fbd = new FolderBrowserDialog())
{
    if (fbd.ShowDialog() == DialogResult.OK)
    {
        foreach (var file in Directory.GetFiles(fbd.SelectedPath,
            "*.png", SearchOption.AllDirectories)
        {
            // this catches things like *.png1 or *.pngp
            // not that they'd ever exist; but they may
            if (Path.GetExtension(file).Length > 4) { continue; }

            var pictureBox = new PictureBox();
            pictureBox.Load(file);

            // set its location here

            this.Controls.Add(pictureBox);
        }
    }
}

此代码仅搜索png个文件,值得注意的是,我检查扩展程序的原因是因为对3个字符的扩展搜索有一点鲜为人知的警告:

  

文件扩展名正好为三个字符的searchPattern将返回扩展名为三个或更多字符的文件,其中前三个字符与searchPattern中指定的文件扩展名匹配。

答案 1 :(得分:1)

Directory.GetFiles("path", "*.jpeg", SearchOption.AllDirectories);

答案 2 :(得分:0)

使用文件夹浏览器对话框用户只能选择文件夹而不能选择文件。因此可能有自己的控件来显示所选文件夹中存在的图像列表。

        FolderBrowserDialog folderBrowserDlg = new FolderBrowserDialog();
        DialogResult dlgResult = folderBrowserDlg.ShowDialog();
        if (dlgResult.Equals(DialogResult.OK))
        {
            foreach (string file in System.IO.Directory.GetFiles(folderBrowserDlg.SelectedPath, "*.png")) //.png, bmp, etc.
            {
                Image image = new Bitmap(file);
                imageList1.Images.Add(image);                 
            }
        }

        this.listView1.View = View.LargeIcon;
        this.imageList1.ImageSize = new Size(32, 32);
        this.listView1.LargeImageList = this.imageList1;
        for (int j = 0; j < this.imageList1.Images.Count; j++)
        {
            ListViewItem item = new ListViewItem();
            item.ImageIndex = j;
            this.listView1.Items.Add(item);
        }

上面的代码将获取所选文件夹中存在的图像文件列表,并将它们添加到listview控件中。

enter image description here