FolderBrowserDialog fbd=new FolderBrowserDialog();
if(fbd.ShowDialog()==DialogResult.OK)
{
    DirectoryInfo di=(fbd.SelectPath);
    FileInfo[] fileList=di.GetFiles;
    ArrayList arr=new ArrayList();
    foreach(FileInfo fi in fileList)
    {
        arr.Add(fi.FullName);
    }
    arrNames=(string[])arr.ToArray(typeof(string));
    picMain.Image=Image.FromFile(arrNames[0]);
}上面代码是从用户选择的文件夹中找出所有文件名,以显示图片.
怎么筛选出图片?(我只要  *.jpg,*.png,*.bmp等文件的文件名)

解决方案 »

  1.   

    使用OpenFileDialog会比用FolderBrowseDialog合适。那样可以用一楼的方法筛选了。
      

  2.   

    if (fi.Name.Substring(fi.Name.LastIndexOf('.'),4).ToString()==".bmp")
    {
    ..................................  
    }
    这个可以判断最后的字母是不是.bmp||.jpg||.png你的程序似乎有错误,我调试的时候是这样!FolderBrowserDialog   fbd=new   FolderBrowserDialog(); 
    if(fbd.ShowDialog()==DialogResult.OK) 

            DirectoryInfo   di=(fbd.SelectPath); //这里怎么都说有错,除非改成new DirectoryInfo(fbd.selectPath);改了后,又好象没找到图象,不知道是不是我的文件夹冒图象!…^_^        FileInfo[]   fileList=di.GetFiles; 
            ArrayList   arr=new   ArrayList(); 
            foreach(FileInfo   fi   in   fileList) 
            { 
               这里加个判断就可以了!
                    arr.Add(fi.FullName); 
            } 
            arrNames=(string[])arr.ToArray(typeof(string)); 
            picMain.Image=Image.FromFile(arrNames[0]); 

      

  3.   


                FolderBrowserDialog fbd = new FolderBrowserDialog();
                if (fbd.ShowDialog() == DialogResult.OK)
                {
                    ArrayList arr = new ArrayList();
                    foreach (string str in System.IO.Directory.GetFiles(fbd.SelectedPath, "*.jpg"))
                    {
                        arr.Add(str);
                    }
                    foreach (string str in System.IO.Directory.GetFiles(fbd.SelectedPath, "*.pnp"))
                    {
                        arr.Add(str);
                    }
                    foreach (string str in System.IO.Directory.GetFiles(fbd.SelectedPath, "*.bmp"))
                    {
                        arr.Add(str);
                    }                arrNames = (string[])arr.ToArray(typeof(string));
                    picMain.Image = Image.FromFile(arrNames[0]);
                } 
      

  4.   

    我觉得答案都不太好.
    有没有象OpenFileDialog类的Filter那样直接把 *.bmp,*.png,*.jpg一起全部筛选的?
      

  5.   

    我已经用了openfiledialog类来打开文件了,现在我要做打开文件夹功能.
    请问谁还有好的办法,拿出来分享啊!我觉得5楼的办法太麻烦了
      

  6.   

    用正责表达式 FolderBrowserDialog fbd = new FolderBrowserDialog();
                if (fbd.ShowDialog() == DialogResult.OK)
                {
                    DirectoryInfo di = new DirectoryInfo(fbd.SelectedPath);
                    FileInfo[] fileList = di.GetFiles();
                    ArrayList arr = new ArrayList();                Regex rg=new Regex(@"^.+\.bmp$|^.+\.png$|^.+\.jpg&");                foreach (FileInfo fi in fileList)
                    {
                        if(rg.IsMatch(fi.FullName))
                            arr.Add(fi.FullName);
                    }
                    string[] arrNames = (string[])arr.ToArray(typeof(string));
                    picMain.Image = Image.FromFile(arrNames[0]);
                } 
      

  7.   

    就算是提供了Filter属性又如何,你以为.NET会有多高明,还不是一样的遍历去匹配,只不过封装了而已,
    用Regex的话性能更低,不信你试试