C# - 更改任务栏图标

24

我想要更改软件任务栏上的图标,所以我更改了项目设置。这个路径是由Visual Studio本身建议的。

Path to the icon

但是我的任务栏仍然显示与之前相同的图标(标准图标) - 在我的资源管理器中,.exe文件具有正确的图标,但在任务栏中不会更改。
我还尝试了结束explorer.exe并重新启动任务,但这完全没有帮助。 我还尝试将分辨率设置为16x16和32x32,但两者都无效。
7个回答

54
你还需要给你的表单添加那个图标。应用程序图标是嵌入在应用程序中并显示在资源管理器或快捷方式上的图标。每个表单都可以有自己的图标。
在表单设计视图中,向下滚动到窗口样式,你会找到设置图标的选项。
以下是Rider中这个部分的一个示例:

enter image description here


2
现在我感觉自己像个白痴。谢谢。我以为在项目属性中更改后它会自动完成。 - loomie
4
有人能详细说明一下吗?你说的“表格”也需要图标吗?如果我已经在项目>属性>应用程序>图标中更改了图标,那我该如何更改它呢? - MrDysprosium

15
我注意到Windows 7和Windows 8有几个问题。任务栏图标取自程序快捷方式的图标,而不是应用程序图标。
如果你通过Visual Studio为应用程序分配图标,则会在窗体和通知区域中显示一个图标。然而,任务栏图标和任何创建的快捷方式将不再使用应用程序的图标,而是使用默认的快捷方式图标。
因此,我发现我必须在应用程序安装程序中设置快捷方式图标(位于开始菜单中)。
对于Windows XP,我不需要这样做。

1
我也同意这个观点。这在Win10上也有点适用。尽管应用程序未固定到Windows 10任务栏中,但Form.Icon仍会被应用,但如果未安装应用程序且没有快捷方式图标,那么默认的.exe文件将会被使用。 - mschr
1
此外,在Windows 10中,您可以尝试直接从Program Files启动exe文件,并使用桌面快捷方式图标来作为任务栏图标,而不是应用程序图标或窗体图标。 - Andrey Moiseev

8

1 - 将一个文件(例如Address_Book.ico)添加到资源部分

2 - 在您的代码中添加以下行

   public Form1()
   {
       ....
       this.Icon = Properties.Resources.Address_Book;
   }

3 - 它有效。


这种方法并不适用于所有情况。我有一个应用程序,在启动时作为最小化的应用程序启动,并动态设置主窗体的图标。这默认为缓存的图标,而不是当前为主窗口设置的图标。对于固定到任务栏的应用程序也是如此。 - C J

5

通过代码设置Form.Icon属性时,还需考虑以下来自MSDN的建议:

一个窗体的图标代表着该窗体在任务栏中显示的图片以及窗体控制框中显示的图标。 如果FormBorderStyle被设置为FixedDialog,则此属性将不起作用。在这种情况下,窗体将不会显示图标。


2

真是我所需要的,用于不同大小的窗体和任务栏图标,谢谢! - IngoB

0

项目属性中设置的图标是可执行文件的图标,而不是任务栏中的图标,任务栏中的图标是当前窗体的图标。

如果您有多个具有相同图标的窗体,并且使用 GUI 设置了一个窗体的图标,则它将在编译后的可执行文件中添加多个图标实例,这将导致更大的编译后文件。

因此,您应该将 Icon = Properties.Resources.icon; 放置在每个窗体的构造函数中以设置窗体的图标。

至于图标大小,我不确定最大尺寸是多少,但我使用 128x128 的图标文件。


0

当窗体图标在启动后设置时,任务栏图标不会更改的情况包括:

  1. 应用程序已固定到任务栏
  2. 应用程序以最小化方式启动

我有一个属于第二类的应用程序。它在Windows启动组中,并以最小化方式启动。如果不想费力地跳过障碍并更改为使用覆盖层,则最简单的解决方案是创建一个简单的一行应用程序,然后启动我的应用程序。

Process.Start(appName);

这个应用程序属于启动组,当它启动我的主要应用程序时,任务栏图标会跟随窗体的当前图标设置。


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