我有一个文件夹。该文件夹中有多个文件夹,每个文件夹中都有一个图像。像这样:
Main Folder>Subfolder 1>Picture 1
Main Folder>Subfolder 2>Picture 2
等
我想使用FolderBrowserDialog
选择主文件夹,并以某种方式显示子文件夹中的所有图片(图片1,图片2等)这是否可以FolderBrowserDialog?
如果没有,我怎么能这样做?感谢
答案 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控件中。