应用程序图标在使用C#时无法正确更改

27
我更改了应用程序的图标,方法是:进入“项目/我的项目属性/图标和清单”,然后载入新图标。现在,在我的debug文件夹中,我的.exe文件的图标已经更新,这很好,但当我执行.exe文件时,任务栏中的应用程序图标仍然显示旧图标。
请给予建议。

2
你是指可执行文件的图标还是窗体的图标?两者之间有区别。 - Alexander
确保你的表单也使用了新图标。 - LarsTech
1
如果您正在从磁盘加载而不是添加资源,请确保在构建时进行“复制”。 - kenny
重新构建全部,并确保在正确的配置下运行,例如Debug或Release。 - Tanmay
你好 @DOTNETBEE,它没有起作用 :( - Somebody
显示剩余7条评论
9个回答

66

您有两个更改图标的位置。

第一个地方

第一个地方是在项目中。

  1. 右键单击项目
  2. 选择属性
  3. 进入应用程序选项卡
  4. 选择图标和清单,然后选择您想要的图标

enter image description here

第二个地方

第二个地方是在Winform的属性中。

  1. 打开表单
  2. 点击表单
  3. 按F4或进入表单的属性
  4. 在属性中向下滚动找到“图标”
  5. 选择您想要的图标。

enter image description here

任务栏中图标与应用程序(.exe)图标不同的原因是任务栏使用当前窗体图标在任务栏中显示。


谢谢您的回复,@Daok。我只想要任务栏中的图标,所以我没有在表单中使用图标。 - Somebody
4
即使我将图标放在表单中,但当我执行.exe文件时仍然显示旧图标 :( - Somebody
2
重启电脑后,它开始显示正确的图标,很奇怪。 - Somebody

48

在遇到同样的问题后,我通过以下方式解决了它:

只需从任务管理器中停止 explorer.exe,然后重新运行 explorer.exe 即可。


1
看起来按照上面的答案更新图标应该可以正确地更改它们,但正如您所列出的那样,资源管理器有时会缓存旧图标。 - Fuzz Evans
1
奇怪的解决方案,但它有效!我猜测资源管理器确实会缓存图标(至少在Win 10 x64上)。 - Niklas
1
不错的想法,@pan4321。这也是我的解决方案。我将我的程序添加到任务栏,但在两个位置替换后图标没有改变,就像Patrick提到的那样(这是正确的),并重新编译它。但是,在资源管理器重新启动后,它在任务栏中被替换了。 - Matt
谢谢,它起作用了。我发现只需重命名图标或将我的可执行文件复制到其他文件夹中,它就会显示正确的图标。 - anandhu

2
如一位评论者所提到的,您应该在*.ico文件的属性中设置:复制到输出目录:仅在较新时复制。
这个属性不是绝对必要的。我开发了一个winform应用程序并在没有图标的情况下进行了测试。然后我创建并添加了图标。当使用VS调试器运行时,图标显示出来了。我将bin/debug目录复制到另一台电脑上,在那里它显示了图标。
但是当通过单击*.exe文件启动应用程序时,在开发机器上没有显示图标。
注销/登录Windows也没有解决这个问题。
将图标文件的“复制到输出目录”属性更改为“仅在较新时复制”,并重新构建应用程序确实有帮助。现在我可以通过单击*.exe启动应用程序,并且图标显示得很好。
结论:
不总是需要将应用程序构建为拷贝到输出目录的图标文件,但采取此措施可以增加成功的几率。

1

如果其他方法都不起作用,尝试重新启动Windows资源管理器进程:

  1. 打开任务管理器。
  2. 右键单击Windows资源管理器进程
  3. 点击重启

Task manager


1

请确保您的*.ico文件包含适当大小的图标(例如小任务栏的16x16像素)。


你好,Wiktor。我有另一个带有新图标的应用程序,一切都正常,因此图标大小不是问题。 - Somebody
如果找不到正确的图标大小,则Windows将即时创建。 - Karlth

0

我也遇到了同样的问题,但以上方法都没有解决。 在我的情况下,我为两种不同的语言(默认语言英语和德语)定义了不同的图标。如果出现两个资源文件:FormX.resxFormX.de.resx,你可以看到这一点。

只有接受的答案改变了默认图标。但是,在我的电脑上运行应用程序时,使用的是德语图标。

所以我必须更改两个资源的图标。在Visual Studio中,您可以通过将语言项(在表单属性中)从默认语言切换到其他语言来更改当前资源语言。


0

我曾经遇到过同样的问题。Patrick提到的“第一处”是指文件图标,即.exe方面。而“第二处”则是指窗体(在左上角)。 重启Windows文件资源管理器似乎也是一个令人满意的解决方案。但今天所有这些都没有起作用。顺便说一下,我没有重新启动电脑。 这才是真正在任务栏中显示新图标的方法:我发现桌面上有一个旧的.exe快捷方式。删除该快捷方式就解决了问题。


0

0
  1. 复制您的新图标到项目属性 --> 资源 --> 图标中
  2. 在您的 Main_Load 函数中添加:

    this.Icon = Properties.Resources.newIcon;
    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接