0

こんにちは、フォルダ内のアイテムを開いて表示するリスト ビューがあります。おそらくshell32またはimagelistを使用して、リストビューにアイコンも表示する方法があるかどうかを知りたいです。コードは次のとおりです。

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

これがどのように見えるか、そしてどのように見せたいかを示す2つの画像です。

私が望んでいた方法: http://imageshack.us/photo/my-images/21/wantd.png/

見た目: http://imageshack.us/photo/my-images/13/needk.png/

4

2 に答える 2

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 を使用してアイコンを抽出する必要があると思います。このリンクも役立つ場合があります

于 2012-01-13T16:32:32.697 に答える
0

ListViewItemsImageListImageIndexおよびImageKeyプロパティがあります。コントロールをフォームに追加ImageListします (ツールボックスのコンポーネント グループから)。ImageList画像リストが選択されているときに、プロパティ グリッドの下にある [画像の選択] をクリックすると、画像を に追加できます。次に、イメージ リストとイメージ インデックスまたはイメージ キーをリスト アイテムに割り当てます。

于 2012-01-13T16:25:23.137 に答える