//得到图片所在文件夹的路径
                string filePath = "";
                filePath = openFileDialog1.FileName.Substring                    (0, openFileDialog1.FileName.LastIndexOf(@"\"));                //    //打开目录,并将目录中所有.jpg.bmp.gif类型的图片放入FileInDir集合
                DirectoryInfo dir = new DirectoryInfo(filePath);
                foreach (FileInfo fi in dir.GetFiles())
                {
                    if (fi.Extension == ".JPG" || fi.Extension == ".jpg" || fi.Extension ==                        ".jpeg" || fi.Extension == ".tif" || fi.Extension == ".png" || fi.Extension == ".bmp" || fi.Extension == ".BMP" ||                        fi.Extension == ".gif" || fi.Extension == ".GIF")
                    {
                        MessageBox.Show(fi.FullName.ToString());
                        FileInDir.Add(fi.FullName.ToString());
                    }
                }MessageBox里弹出图片路径的顺序和桌面上图片排列的顺序完全不一样,求解!
(只摘取了感觉有问题部分的代码,也有可能不是这里的问题)

解决方案 »

  1.   

    你不能靠foreach来排序,桌面上图片排列的顺序也是不同的,比如按名称、大小、时间排出来的顺序本来就不一样。
      

  2.   

      foreach (FileInfo fi in dir.GetFiles().OrderBy(x => x.FullName.ToString()) )
      {
      if (fi.Extension == ".JPG" || fi.Extension == ".jpg" || fi.Extension ==  ".jpeg" || fi.Extension == ".tif" || fi.Extension == ".png" || fi.Extension == ".bmp" || fi.Extension == ".BMP" ||  fi.Extension == ".gif" || fi.Extension == ".GIF")
      {
      MessageBox.Show(fi.FullName.ToString());
      FileInDir.Add(fi.FullName.ToString());
      }
      }
      

  3.   

    fi.Extension == ".gif" 
      

  4.   

    请问 加的这段代码是让它按什么排序?  是按ASCⅡ排序的吗?
      

  5.   

    对的。你还可以按别的排序,比如 x => x.Extension 按照扩展名排序。