首页 新闻 会员 周边

C#写的文件管理程序怎么关联系统图标?

0
[已解决问题] 解决于 2011-04-29 22:06

在网上找到一些代码可以根据后缀名将图标显示在pictureBox里面。

我做的文件管理程序是遍历系统文件夹和文件添加到ListView的Item中。

我想让Item中的文件能够自动获取到系统图标该怎么弄啊?

Beta3.0的主页 Beta3.0 | 初学一级 | 园豆:177
提问于:2011-03-16 20:39
< >
分享
最佳答案
1
[DllImport("Shell32.dll")]
staticexternint SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbFileInfo, uint uFlags);

struct SHFILEINFO
{
public IntPtr hIcon;
publicint iIcon;
publicuint dwAttributes;
publicchar szDisplayName;
publicchar szTypeName;
}

///<summary>
/// 从文件扩展名得到文件关联图标
///</summary>
///<param name="fileName">文件名或文件扩展名</param>
///<param name="smallIcon">是否是获取小图标,否则是大图标</param>
///<returns>图标</returns>
staticpublic Icon GetFileIcon(string fileName, bool smallIcon)
{
SHFILEINFO fi
=new SHFILEINFO();
Icon ic
=null;
//SHGFI_ICON + SHGFI_USEFILEATTRIBUTES + SmallIcon
int iTotal = (int)SHGetFileInfo(fileName, 100, ref fi, 0, (uint)(smallIcon ?273 : 272));
if (iTotal >0)
{
ic
= Icon.FromHandle(fi.hIcon);
}
return ic;
}

privatevoid button1_Click(object sender, EventArgs e)
{
Graphics g
= pictureBox1.CreateGraphics();
g.Clear(pictureBox1.BackColor);
g.DrawIcon(GetFileIcon(textBox1.Text,
true), 0, 0);

g
= pictureBox2.CreateGraphics();
g.Clear(pictureBox2.BackColor);
g.DrawIcon(GetFileIcon(textBox1.Text,
false), 0, 0);
}
史提芬●孙 | 菜鸟二级 |园豆:205 | 2011-03-17 11:40
怎么绑定到imglist啊?
Beta3.0 | 园豆:177 (初学一级) | 2011-03-18 23:29
其他回答(1)
0

将你的后缀名格式在注册表中注册、对应一个图片、这样系统会自动给你换成相应的图表。

邢少 | 园豆:10926 (专家六级) | 2011-03-17 11:12
能不能给个例子啊...
支持(0) 反对(0) Beta3.0 | 园豆:177 (初学一级) | 2011-03-18 23:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册