C# WinForms 图标替换完全指南

C# WinForms 替换图标分两种:对应你截图里的 EXE 文件图标(资源管理器里显示),和运行后窗口左上角的标题栏图标,都可以在项目里直接设置。


一、替换 EXE 文件的图标(资源管理器里显示的图标)

这是最核心的设置,一次编译永久生效,输出的 exe 文件图标会直接替换。

操作步骤

  1. 在 Visual Studio 右侧「解决方案资源管理器」中,右键你的项目 WindowInfoSpy → 选择 属性

  2. 左侧菜单切换到 应用程序 选项卡

  3. 找到「图标和清单」区域,点击「图标」右侧的 浏览按钮(...)

  4. 选中你准备好的 .ico 格式图标文件,保存项目

  5. 重新「生成解决方案」,编译后的 exe 图标就替换完成了

💡 小提示:Windows 有图标缓存,替换后如果看起来没变化,把 exe 移动到其他文件夹,或者重启资源管理器就能看到新图标。


二、替换运行后窗口左上角的图标

你的代码是全动态创建界面,直接在 InitCustomUI() 方法里加一行代码即可,可以和 exe 用同一个 ico 文件。

方法 1:直接加载本地文件(最简单)

InitCustomUI() 方法开头添加:

// 替换成你的 ico 文件路径,建议和 exe 放同一目录
this.Icon = new Icon("app.ico");

方法 2:嵌入程序内部(推荐,不依赖外部文件)

适合把图标编译进 exe,不用单独带 ico 文件:

  1. 右键项目 → 添加 → 现有项,选择你的 ico 文件(比如命名为 app.ico

  2. 选中刚添加的 app.ico,在属性窗口把「生成操作」改为 嵌入的资源

  3. InitCustomUI() 里添加代码:

System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
this.Icon = new Icon(asm.GetManifestResourceStream("WindowInfoSpy.app.ico"));

三、图标格式要求

  1. 必须是 **.ico** 格式:不能直接用 JPG/PNG,需要转换成 ico 格式。

  2. 建议使用多尺寸 ico:包含 16×16、32×32、48×48 三种尺寸,这样在桌面小图标、大图标、任务栏、窗口标题栏显示都清晰,不会模糊。

  3. 如果只有 PNG 图片,可以用在线 ico 转换工具生成多尺寸的 ico 文件。


补充:一键统一图标

如果你希望「exe 文件图标 + 窗口标题栏图标 + 任务栏图标」全部是同一个,只做第一步项目属性设置就足够了:

  • 任务栏图标会自动沿用 exe 的图标

  • 窗口标题栏图标默认也会继承项目图标,个别情况不生效的话,再加一行代码设置即可