1. 新建一个工程demo
2.添加一个ListView控件
3.添加以下引用:
using
System.Runtime.InteropServices;
[DllImport( " shell32 " )]
private static extern int SHGetFileInfo( string pszPath, int dwFileAttributes, ref SHFILEINFO psfi, int cbFileInfo, int uFlags);
[DllImport( " shell32 " )]
private static extern int SHGetFileInfo( string pszPath, int dwFileAttributes, ref SHFILEINFO psfi, int cbFileInfo, int uFlags);
4.添加一些变量。
const
int
SHGFI_ICON
=
0x0100
;
const int SHGFI_LARGEICON = 0x0000 ;
static string [] drives;
ImageList img = new ImageList();
const int SHGFI_LARGEICON = 0x0000 ;
static string [] drives;
ImageList img = new ImageList();
5.添加窗体的Load方法:
private
void
Form1_Load(
object
sender, System.EventArgs e)
... {
this.listView1.LargeImageList=img;
// this.listView1.SmallImageList=img;
this.listView1.LargeImageList=img;
this.listView1.StateImageList=img;
drives=Environment.GetLogicalDrives();
for(int i=0;i<drives.Length;i++)
...{
string str_temp=drives[i];
this.listView1.Items.Add(str_temp);
this.listView1.Items[i].ImageIndex=i;
}
for(int i=0;i<drives.Length;i++)
...{
SHFILEINFO FileInfo=new SHFILEINFO();
SHGetFileInfo(drives[i],0,ref FileInfo,Marshal.SizeOf(FileInfo),SHGFI_ICON | SHGFI_LARGEICON);
Icon myIcon;
myIcon=Icon.FromHandle(FileInfo.hIcon);
img.Images.Add(myIcon);
}
}
... {
this.listView1.LargeImageList=img;
// this.listView1.SmallImageList=img;
this.listView1.LargeImageList=img;
this.listView1.StateImageList=img;
drives=Environment.GetLogicalDrives();
for(int i=0;i<drives.Length;i++)
...{
string str_temp=drives[i];
this.listView1.Items.Add(str_temp);
this.listView1.Items[i].ImageIndex=i;
}
for(int i=0;i<drives.Length;i++)
...{
SHFILEINFO FileInfo=new SHFILEINFO();
SHGetFileInfo(drives[i],0,ref FileInfo,Marshal.SizeOf(FileInfo),SHGFI_ICON | SHGFI_LARGEICON);
Icon myIcon;
myIcon=Icon.FromHandle(FileInfo.hIcon);
img.Images.Add(myIcon);
}
}