您好我有一个列表视图,可以打开文件夹中的项目并显示它们。我想知道是否有办法让列表视图显示图标,也许使用shell32或图像列表。这是代码:
Imports System.IO
Imports System.Xml
Imports System.Runtime.InteropServices
Imports Microsoft.VisualBasic
Public Class cv7import
Private Sub cv7import_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim caminho As String
caminho = "C:\Documents and Settings\Software\Ambiente de trabalho\1"
lstvicon.View = View.Details
lstvicon.GridLines = False
lstvicon.FullRowSelect = True
lstvicon.HideSelection = False
lstvicon.MultiSelect = True
lstvicon.Columns.Add("Nome")
lstvicon.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize)
Dim DI As System.IO.DirectoryInfo = New System.IO.DirectoryInfo(caminho)
Dim files() As System.IO.FileInfo = DI.GetFiles
Dim file As System.IO.FileInfo
Dim li As ListViewItem
For Each file In files
li = lstvicon.Items.Add(file.Name)
li.Tag = file.FullName
Next
End Sub
End Class
以下两张图片,展示了它的外观以及我希望它的外观,如果有帮助的话。
答案 0 :(得分:1)
你需要找到文件的扩展名来开始:
Dim file As String = "C:\scratch\newfile.txt"
Dim ext as string = IO.Path.GetExtension(file)
然后,您需要在注册表的HKEY_CLASSES_ROOT
部分找到此条目:
HKEY_CLASSES_ROOT\.txt
此键中的默认值给出了与我的案例txtfile
中的此文件关联的文件类型(请记住,根据用户设置的内容和安装的程序,不同的注册表可能具有不同的值)
然后,您需要在DefaultIcon
:
HKEY_CLASSES_ROOT
键
HKEY_CLASSES_ROOT\txtfile\DefaultIcon
此处的默认值为您提供了我的案例中图标和图标编号的位置:
%SystemRoot%\system32\imageres.dll,-102
从这一点开始,我认为您可能需要依赖ExtractIconEX API 提取图标。 This link也可能有用
答案 1 :(得分:0)
ListViewItems
拥有ImageList
,ImageIndex
和ImageKey
属性。向表单添加ImageList
控件(来自工具箱中的组件组)。选择图像列表后,可以通过单击属性网格下方的“选择图像”将图像添加到ImageList
。然后将图像列表和图像索引或图像键分配给列表项。