首页 > 解决方案 > 您可以以编程方式更改 notifyIcon 的图标吗?

问题描述

我有一个 WinForms 应用程序,它有一个写入 Properties.Settings 的小安装程序。用户需要从他的硬盘中选择他的 notifyIcon 图标。我不能只是改变它

notifyIcon1.Icon = Properties.Settings.Default.userIcon;

因为它抛出“无法从“字符串”转换为“System.Drawing.Icon”。有人可以纠正我吗?
提前谢谢。

标签: c#.netwinforms

解决方案


“用户需要从他的硬盘驱动器中选择他的 notifyIcon 图标”。

文件名中的图标在某处吗?如果用户从硬盘驱动器中选择一个图标,他是否实际上选择了一个包含图标的文件?

如果是这种情况,您应该定义Properties.Settings.Default.UserIcon为字符串并保存文件名。为您的窗口提供一个获取和设置 UserIcon 的属性。

private string UserIconFileName
{
    get => Properties.Settings.Default.UserIcon;
    set => properties.Settings.Default.UserIcon = value;
}

private Icon LoadUserIcon
{
    string userIconFileName = this.UserIconFileName
    if (!File.Exists(userIconFileName))
    {
        // TODO: decide what to do if there is no such file
    }
    else
    {
        return new Icon(userIconFileName);
    }
}

关闭程序时不要忘记保存您的属性:

private void OnFormClosed(object sender, FormClosedEventArgs e)
{
    Properties.Settings.Default.Save();
}

推荐阅读