В поисках лучшего способа загрузить вид списка, показывающий миниатюры изображений папки - PullRequest
0 голосов
/ 16 августа 2010

У меня есть следующий код

files = di.GetFiles("*.jpg");
for (int i = 0; i < files.Length; i++)
{
   il.Images.Add(System.Drawing.Image.FromFile(folder + "\\" + files[i].Name));
   lv.Items.Add(files[i].Name, i);
}

код заполняет System.Windows.Forms.ImageList изображениями из файлов jpg.он также создает System.Windows.Forms.ListView, где каждый элемент связан с изображением в списке изображений.

Я уменьшил размер файла и попытался оптимизировать код.Тем не менее, я не могу получить менее 3 секунд для 290 ~ 30 000 файлов JPG (или любого другого формата).

У вас есть лучший способ загрузить представление списка?

Ответы [ 2 ]

4 голосов
/ 16 августа 2010

Оберните ваш код в вызовы BeginUpdate / EndUpdate для ListView.

2 голосов
/ 16 августа 2010

Одно простое изменение, которое вы можете сделать, это изменить это:

folder + "\\" + files[i].Name

к этому:

files[i].FullName

Вы также можете использовать цикл foreach вместо цикла for:

foreach (FileInfo file in files)
{
   il.Images.Add(System.Drawing.Image.FromFile(file.FullName));
   lv.Items.Add(file.Name, i);
}

И ListView может работать в связанном или несвязанном режиме. Вы используете несвязанный режим. Иногда лучше использовать связанный режим.

...