繁体   English   中英

C# Winforms 更改任务栏图标

[英]C# Winforms change taskbar icon

我有一个旧的遗留系统,它使用 Winforms 并通过内置的一键式发布,我负责 3 个不同的安装,每个安装都有自己的数据库,所以它被设置为当点击不同的系统时,它检查 isCompany1 并将相应地设置 Favicon,因此当在应用程序窗口中完成部署时,图标和清单设置为正确的 ICO,安装后 .exe 图标将在那里设置,

但是,我正在尝试将所有这些都内联,因为当我们调试 drop 时,会询问我们想要连接到哪个数据库,并且根据它的不同,它会进行不同的设置。 在 VS 中运行时,任务栏中的图标将根据动态 Favicon 更改,但是当它与这个新选择解除时,它不会改变,(它会在第一次加载时改变一次,然后不会再次改变)

问题是一些用户需要访问不同的实例,所以希望底部有不同的图标,但它不会改变任务菜单,但其他所有东西,如 ALT-TAB 和控制面板图标都在改变,

所有表单都链接到一个基本表单并调用它:

if (App.IsCompany1)
{
    this.Icon = new Icon("Resources\\Company1.ico");
}
else if (App.Company2)
{
    this.Icon = new Icon("Resources\\Company2.ico");
}
else if (App.Company3)
{
    this.Icon = new Icon("Resources\\Company3.ico");
}

因为我说过这会改变一切但不会改变任务栏,但会来自 VS 调试,

我确保 .ico 具有所有尺寸,通过在每个尺寸上写下它们的尺寸,并且它们正确显示任务栏和 ALT-TAB 都使用 32x32

如果有任何安慰,我无法重现您的投诉。

我在资源中放了 3 个图标,在表单上放了一个按钮,代码如下:

    private int iconum = 0;
    private Icon[] icons = new[] { Properties.Resources.icon1, Properties.Resources.icon2, Properties.Resources.icon3 };

    private void button1_Click(object sender, EventArgs e)
    {
        this.Icon = icons[iconum++ % icons.Length];
    }

它在每次单击按钮时一遍又一遍地循环浏览主窗体标题栏和 Windows 任务栏中的图标(确保也运行发布版构建的 exe,而不是调试启动):

在此处输入图片说明

注意:右上角的东西是我的任务栏

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM