假设你想要的不仅仅是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像大多数其他控件一样具有点击和双击事件。