以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何在listview显示文件名图标?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=162401)

--  作者:wh420
--  发布时间:2021/4/13 15:20:00
--  如何在listview显示文件名图标?
下面代码是用笨方法根据扩展名显示相对应图标,比较麻烦。
在论坛看到使用:Dim icon As Icon = System.Drawing.Icon.ExtractAssociatedIcon("d:\\test.xls")可以直接获取对应文件名图标。
怎么把标红的代码应用到下面代码中?

Dim ftp1 As New FtpClient
ftp1.Host = FtpIp
ftp1.Account = FtpUser
ftp1.Password = FtpPass

Dim lvw As WinForm.ListView = e.Form.Controls("ListView1")
\'lvw.Images.AddImage("China","China.Ico","China48.Ico")
lvw.StopRedraw()
lvw.Groups.Clear() \'清除原来的分组
lvw.Columns.Clear() \'清除原来的列
lvw.Rows.Clear() \'清除原来的行
lvw.Images.Clear() \'清除原来的图片
lvw.View = ViewMode.Details
lvw.GridLines = True \'显示网格线
lvw.Images.LargeSize = new size(16,16)
Dim  ics As String() = {"doc","docx","rtf","","","","","","","txt","other"}  \'定义扩展名数组
Dim kzms As String ="doc txt other"  \'定义已知扩展名的文本串
For Each ic As String In ics
    lvw.Images.AddImage(ic,ic & ".ico",ic & ".ico")  \'向listview里添加图标
Next

\'e.form.controls("listview1").backcolor = Color.Red
\'e.form.controls("ListView1").basecontrol.BackColor=color.red
Dim cls() As String = {"FileName","FileSize","CreaTime"} \'指定要显示的各列
Dim cls1() As String = {"文件名","文件大小","修改时间"}
Dim wds() As Integer = {400,100,150} \'定义列宽
For i As Integer = 0 To  cls.Length - 1  \'增加列
    Dim c As WinForm.ListViewColumn = lvw.Columns.Add()
    c.Name = cls(i) \'指定列名
    c.Text = cls1(i) \'指定标题,这里标题和列名相同
    c.Width = wds(i) \'指定列宽
Next
lvw.Columns("FileSize").TextAlign = HorizontalAlignment.Center
lvw.Columns("CreaTime").TextAlign = HorizontalAlignment.Center
lvw.Columns("FileName").TextAlign = HorizontalAlignment.Center
For Each s As String In Tables("表A").Current.DataRow.Lines("FileName")
    \'从数据表中提取数据
    Dim Parts() As String = s.Split("*")
    Dim r As  WinForm.ListViewRow =  lvw.Rows.Add() \'增加一行
    Dim Dot As Integer = parts(0).LastIndexOf(".") \'定义.的位置
    Dim kzm As String = parts(0).SubString(Dot + 1) \'获取扩展名
    If kzms.Contains(kzm) = True Then
        r.ImageKey = kzm \'指定行的图标键值
    Else
        r.ImageKey = "other"
    End If
    For Each cl As String In cls \'逐列取值
        Select Case cl
            \'Case "人口","面积" \'如果是人口列或面积列
                \'r(cl) = format(s(cl),"#,000") \'则显示千位分割符号
            Case "FileName"
                r(cl) = s
            Case "FileSize"
                r(cl) = Format(ftp1.GetFileSize(s)/1024/1024,"0.00") & "MB"
            Case "CreaTime"
                
                r(cl)=ftp1.GetFileTime(s)
        End Select
    Next
Next

lvw.ResumeRedraw() \'恢复绘制
ftp1.Close()

--  作者:有点蓝
--  发布时间:2021/4/13 16:45:00
--  
没有办法使用,建议网上下载一套对应的文件的图标使用