获取相关文件类型图标是开发文件管理器、文件上传下载等功能中常用的技术,以下是使用C#获取文件类型图标的方法代码完整攻略。
Step 1:引入命名空间
使用C#获取文件类型图标需要引入System.Drawing和System.Runtime.InteropServices命名空间。
using System.Drawing;
using System.Runtime.InteropServices;
Step 2:定义方法
在class中定义一个GetFileIcon
方法,该方法接收一个文件路径的string参数和一个布尔值参数。
public static Icon GetFileIcon(string filePath, bool isLargeIcon)
{
SHFILEINFO shinfo = new SHFILEINFO();
uint flags = SHGFI_ICON | SHGFI_USEFILEATTRIBUTES;
if (!isLargeIcon)
{
flags |= SHGFI_SMALLICON;
}
SHGetFileInfo(filePath, FILE_ATTRIBUTE_NORMAL, ref shinfo, (uint)Marshal.SizeOf(shinfo), flags);
return Icon.FromHandle(shinfo.hIcon);
}
Step 3:使用Win32 API方法获取系统文件图标
使用Shell32.dll
中的SHGetFileInfo方法来获取文件的系统预设图标。
[DllImport("Shell32.dll")]
public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags);
[StructLayout(LayoutKind.Sequential)]
public struct SHFILEINFO
{
public IntPtr hIcon;
public int iIcon;
public uint dwAttributes;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
public string szDisplayName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]
public string szTypeName;
}
const uint SHGFI_ICON = 0x000000100;
const uint SHGFI_SMALLICON = 0x000000001;
const uint SHGFI_USEFILEATTRIBUTES = 0x000000010;
const uint FILE_ATTRIBUTE_NORMAL = 0x00000080;
Step 4:使用方法获取文件图标
调用GetFileIcon
方法传递文件路径和图标大小参数。例如:
Icon fileIcon = GetFileIcon(@"C:\Users\User\Desktop\example.jpg", true);
示例1:显示具体文件类型的图标
private void Form_Load(object sender, EventArgs e)
{
Icon fileIcon = GetFileIcon(@"C:\Users\User\Desktop\example.xlsx", true);
this.Icon = fileIcon;
}
此示例通过在窗体加载事件中获取并设置一个.xlsx文件的图标,来演示如何显示具体文件类型的图标。
示例2:显示文件夹的图标
private void ShowFolderIcon(string folderPath)
{
Icon folderIcon = GetFileIcon(folderPath, true);
pictureBox1.Image = folderIcon.ToBitmap();
}
此示例使用pictureBox来显示文件夹的图标。此时folderPath
参数应该是某一个文件夹的路径。需要注意的是,在这种情况下,使用的是GetFileIcon
方法来获取文件夹的图标。
至此,完整攻略结束。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#根据文件类型获取相关类型图标的方法代码 - Python技术站