假設你想要的不僅僅是File
,並在LV Folder
名(更像Explorer),我會用DirectoryInfo
:
Dim lvi As ListViewItem
Dim di As New DirectoryInfo("C:\Temp")
Dim myIcon As Icon
' ext/icon lookup
Dim exts As New List(Of String)
ImageList1.Images.Clear()
For Each fi As FileInfo In di.EnumerateFiles("*.*")
lvi = New ListViewItem
lvi.Text = fi.Name
lvi.SubItems.Add(Path.GetDirectoryName(fi.FullName))
lvi.SubItems.Add(((fi.Length/1024)).ToString("0.00"))
lvi.SubItems.Add(fi.CreationTime.ToShortDateString)
If exts.Contains(fi.Extension) = False Then
myIcon = Icon.ExtractAssociatedIcon(fi.FullName)
ImageList1.Images.Add(fi.Extension, myIcon)
exts.Add(fi.Extension)
End If
lvi.ImageKey = fi.Extension
myLV.Items.Add(lvi)
Next
該代碼使用List(of String)
來跟蹤哪些圖標已被添加,以便您不會爲重複的文件類型反覆添加相同的圖像。另外,它顯示名稱,文件夾,大小,日期和圖標。

使用Directory
將依靠System.io.Path
越來越大小和日期代碼將無法使用:
For Each s As String In Directory.EnumerateFiles("C:\Temp")
lvi = New ListViewItem
lvi.Text = Path.GetFileName(s)
lvi.SubItems.Add(Path.GetDirectoryName(s))
Dim fileExt = Path.GetExtension(s)
If exts.Contains(fileExt) = False Then
myIcon = Icon.ExtractAssociatedIcon(s)
ImageList1.Images.Add(fileExt, myIcon)
exts.Add(fileExt)
End If
lvi.ImageKey = fileExt
myLV.Items.Add(lvi)
Next
How can I click open these icons
這是一個不同的問題。請記住,LV只包含字符串(文本),並從文件中刪除了路徑。因此,您必須首先將它們粘合在一起以獲取合法名稱(或將其存儲在LV中)。也就是說,LV像大多數其他控件一樣具有點擊和雙擊事件。