【问题标题】:Can you change an icon of a notifyIcon programatically?您可以以编程方式更改 notifyIcon 的图标吗?
【发布时间】:2020-05-26 09:20:09
【问题描述】:

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

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

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

【问题讨论】:

  • 尝试检查这个线程 - stackoverflow.com/questions/74466/… 即使它是 WPF,它也解释了如何在给定路径时获取 System.Drawing.Icon 对象。
  • Icon icon = new Icon(@"Properties.Settings.Default.userIcon", [The Icon Size, Eventually]);
  • 吉米,你的解决方案奏效了!非常感谢!

标签: c# .net winforms


【解决方案1】:

“用户需要从他的硬盘中选择他的 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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2015-09-26
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多