设置应用程序图标时,C#设置快捷方式的图标



我正在尝试设置应用程序的图标(在任务栏中可见(。当我运行.exe本身或从Visual Studio运行时,图标是正确的,但是从快捷方式开始时,这并不适用。应用程序本身内的图标左上角是正确的。

用于设置图标的代码:

var assemblyDirectory = Directory.GetCurrentDirectory();
var iconUri = new Uri(Path.Combine(assemblyDirectory, resourceName), UriKind.Absolute);
Icon= BitmapFrame.Create(iconUri);

我正在尝试添加一个红色圆圈,以指示我的应用程序中的更改为用户,这是通过在2个图标之间更改来完成的。

关于如何在运行时设置快捷方式的图标或如何在任务栏 - 件中显示红色圆圈的任何想法?

尽管不可能在运行时设置汇编图标(仅读取(,但您可以使用NotifyIcon在系统托盘中显示图标,并且在运行时很容易更改。

这是如何实现通知的示例:https://www.codeproject.com/tips/627796/doing-a-notifyicon-program-program-the-right-way

注意:由于您使用的是WPF,因此您需要在应用程序中包含对Windows.forms的引用。

编辑:以防万一链接死了,这里有一些代码示例。

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new MyCustomApplicationContext());
}
public class MyCustomApplicationContext : ApplicationContext
{
    public static NotifyIcon trayIcon;
    public MyCustomApplicationContext()
    {
        trayIcon = new NotifyIcon()
        {
            Icon = icon,
            ContextMenu = new ContextMenu(new MenuItem[]
            {
                new MenuItem("Exit", Exit),
                new MenuItem("Do something", DoSomething),
            }),
            Visible = true,
            BalloonTipText = "My Application",
            BalloonTipTitle = "My Application",
            Text = "My Application Text"
        };
        trayIcon.Click += new System.EventHandler(trayIcon_Click);
    }
    private void trayIcon_Click(object sender, System.EventArgs e)
    {
        //Do something
    }
    void DoSomething(object sender, EventArgs e)
    {
    }
    void Exit(object sender, EventArgs e)
    {
        // Hide tray icon, otherwise it will remain shown until user mouses over it
        trayIcon.Visible = false;
        Application.Exit();
    }
}

最新更新