c#根据文件类型获取相关类型图标的方法代码

yizhihongxing

获取相关文件类型图标是开发文件管理器、文件上传下载等功能中常用的技术,以下是使用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技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • c#用for语句输出一个三角形的方法

    下面就为您详细讲解一下,在C#中用for语句输出一个三角形的方法: 思路 首先,我们需要知道三角形的构成,通常由若干个等腰直角三角形拼接成的。那么,我们可以通过for循环嵌套的方式来输出若干个等腰直角三角形,最终构成一个完整的三角形。具体的思路如下: 外层循环控制等腰三角形的行数。 内层循环控制等腰三角形的列数。 输出符号根据行数和列数来判断输出的内容,可以…

    C# 2023年6月7日
    00
  • c#实现winform屏幕截图并保存的示例

    下面是 “c#实现winform屏幕截图并保存的示例”的完整攻略。 1. 前置知识 在进行本次实验之前,请确保你已经掌握以下内容: C#语言基础知识 Winform应用程序开发和控件使用 .NET Framework中Graphics和Bitmap类的使用 2. 实现屏幕截图的代码 下面是一个简单的C#程序,利用Graphics和Bitmap类从当前屏幕中截…

    C# 2023年6月6日
    00
  • .net后台代码调用前台JS的两种方式

    你可以按照以下步骤来进行。 步骤一:引入前端JS文件 在实现后台调用前台JS的功能之前,首先需要在HTML页面引入JS文件。我们可以使用以下代码引入JS文件: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo…

    C# 2023年5月31日
    00
  • 如何在C#中集成Lua脚本

    如何在C#中集成Lua脚本 Lua是一种轻量级脚本语言,它被广泛应用于游戏编程、嵌入式系统和工业自动化等领域。在C#中集成Lua脚本可以使开发者更加灵活地扩展应用程序的功能。下面是详细的攻略: 步骤一:下载并安装Lua库 在http://www.lua.org/download.html官网上下载适合您系统的Lua库并解压到本地目录,例如C:\Lua。 步骤…

    C# 2023年5月15日
    00
  • c# 网络编程之http

    C# 网络编程之 HTTP 完整攻略 在本文中,将会介绍 C# 网络编程之 HTTP,包括 HTTP 协议介绍、C# 中的 HTTP 编程以及两个示例。 HTTP 协议介绍 HTTP(HyperText Transfer Protocol),即超文本传输协议,是 Internet 上应用最为广泛的一种网络协议。HTTP 协议是基于请求和响应模式的、无状态的协…

    C# 2023年5月15日
    00
  • 一文带你快速学会C#中WinForm框架的使用详解

    标题:一文带你快速学会C#中WinForm框架的使用详解 简介 在本文中,我将全面介绍C#中WinForm框架的使用,包括窗体的基本操作、控件的使用、事件的处理等内容。 窗体的基本操作 创建窗体 在C#中创建一个Windows窗体非常简单,只需要借助Visual Studio创建Windows Form应用即可。 窗体属性设置 在Windows窗体中,有很多…

    C# 2023年5月31日
    00
  • ASP.NET MVC实现横向展示购物车

    以下是ASP.NET MVC实现横向展示购物车的完整攻略: 首先,我们需要创建一个MVC项目。在Visual Studio中,选择“新建项目”,然后选择“ASP.NET Web应用程序(.NET Framework)”。在下一个窗口中,选择“MVC”模板,然后点击“创建”。 接下来,我们需要创建一个购物车模型。在Models文件夹中,创建一个名为“Shopp…

    C# 2023年5月12日
    00
  • C#中程序自删除实现方法

    以下是C#中程序自删除实现方法的完整攻略: 实现方法 程序自删除的实现方法可以分为两个步骤: 首先,需要使用System.Diagnostics.Process类来启动一个新的进程,并让该进程等待当前进程结束后再继续执行。 在新的进程启动后,调用System.IO.File类的方法,删除当前进程的文件。 具体实现请参考下面的示例代码。 示例说明 示例1: u…

    C# 2023年6月7日
    00
合作推广
合作推广
分享本页
返回顶部