Image Viewer removing items from listbox that not image

47 Views Asked by At

I have this code

var dirInfo = new DirectoryInfo(currentDir);
DirectoryInfo di = dirInfo;
FileInfo[] fia = di.GetFiles();
FileInfo t = null;
for (int p = 0; p <= fia.Length - 2; p++)
{
  for (int i = 0; i <= fia.Length - 2; i++)
  {
    if (fia[i].LastWriteTime < fia[i + 1].LastWriteTime)
    {
      t = fia[i + 1];
      fia[i + 1] = fia[i];
      fia[i] = t;
    }
  }
}
foreach (FileInfo fi in fia)
{
  listBoxImages.Items.Add(fi.Name);
}

It's sorting files before adding to ListBox by writing time, but it's wont able to remove files that not an images, before adding it to ListBox. I've tried many solutions that I've googled and nothing worked for me.

1

There are 1 best solutions below

0
user19945067 On BEST ANSWER

Okay, i've found and used this :

 FileInfo[] fia = di.GetFiles("*.bmp")
 .Union(di.GetFiles("*.jpg"))
 .Union(di.GetFiles("*.png"))
 .Union(di.GetFiles("*.jpeg"))
 .Union(di.GetFiles("*.tiff"))
 .ToArray();

so the code looks like :

var dirInfo = new DirectoryInfo(currentDir);
DirectoryInfo di = dirInfo;
FileInfo[] fia = di.GetFiles("*.bmp")
 .Union(di.GetFiles("*.jpg"))
 .Union(di.GetFiles("*.png"))
 .Union(di.GetFiles("*.jpeg"))
 .Union(di.GetFiles("*.tiff"))
 .ToArray();
FileInfo t = null;
for (int p = 0; p <= fia.Length - 2; p++)
{
  for (int i = 0; i <= fia.Length - 2; i++)
  {
    if (fia[i].LastWriteTime < fia[i + 1].LastWriteTime)
    {
      t = fia[i + 1];
      fia[i + 1] = fia[i];
      fia[i] = t;
    }
  }
}
foreach (FileInfo fi in fia)
{
  listBoxImages.Items.Add(fi.Name);
}

beautiful