2010-08-15 62 views
0

的縮略圖我有下面的代碼尋找最好的方式來加載列表視圖中顯示文件夾

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); 
} 

代碼填充從一個JPG文件畫面的System.Windows.Forms.ImageList。它還創建一個System.Windows.Forms.ListView,其中每個項目都與圖像列表中的圖片相關聯。

我製作的文件很小,並試圖優化代碼。然而,我不能在3秒內得到290〜30k jpg文件(或任何其他格式)。

你有更好的方法來加載列表視圖嗎?你可以讓

回答

4

將代碼封裝在ListView的BeginUpdate/EndUpdate調用中。

2

一個簡單的變化可以改變:

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可以在綁定或非綁定模式下工作。您正在使用未綁定模式。有時使用綁定模式會更清潔。

+0

1.我一直認爲foreach比for循環效率低?! foreach工作更快嗎?總是? 2.我應該怎麼做才能獲得綁定模式。 3.我不知道文件[i] .FullName是否使它運行得更快,但它看起來更清潔......謝謝。 – Asaf 2010-08-16 06:16:25

+0

在閱讀http://stackoverflow.com/questions/365615/in-net-which-loop-runs-faster-for-or-foreach後,我認爲循環對於或者foreach來說真的很快......它是加載我應該優化的圖像。 – Asaf 2010-08-16 06:45:51

相關問題