我有一ListView,现在由用户向其中增加文件,这几步没有什么问题,但如何才能把文件所对应的图标显示出来?如.txt文件就显示一个记事本的图标,.exe就显示这个exe文件的图标等!

解决方案 »

  1.   

    SHGetFileInfo WINSHELLAPI DWORD WINAPI SHGetFileInfo( 
        LPCTSTR pszPath, 
        DWORD dwFileAttributes, 
        SHFILEINFO FAR *psfi, 
        UINT cbFileInfo, 
        UINT uFlags 
    ); 用此函数就可以了 如 
    首先定义一个变量来,保存返回的图标信息 
    SHFILEINFO  info; 
    SHGetFileInfo(".bmp",FILE_ATTRIBUTE_NORMAL,&info,sizeof(SHFILEINFO),SHGFI_ICON); 其中图标就在info变量中,即info.hIcon就是图标句柄至于EXE,需要读取文件本身,去寻找图标。不过一般地说,显示一个默认的图标也可以了。
      

  2.   

    this.listView1.Items[i].ImageIndex  =1 
    或添加图标列
      

  3.   

    文件图标
    [DllImport("shell32")] 
            private static extern int ExtractIcon(int hinst, string lpszExeFileName, int nIconIndex); int icons = ExtractIcon(0, Application.ExecutablePath, 0); 
      

  4.   

    用imageList
    将txt,exe等图标添加到imagelist中,ListView的smallimagelist/stateimagelist属性设imagelist1判断ListView中文件后缀名,this.listView1.Items[i].StateImageIndex=????