c# - 您可以以编程方式更改 notifyIcon 的图标吗?
问题描述
我有一个 WinForms 应用程序,它有一个写入 Properties.Settings 的小安装程序。用户需要从他的硬盘中选择他的 notifyIcon 图标。我不能只是改变它
notifyIcon1.Icon = Properties.Settings.Default.userIcon;
因为它抛出“无法从“字符串”转换为“System.Drawing.Icon”。有人可以纠正我吗?
提前谢谢。
解决方案
“用户需要从他的硬盘驱动器中选择他的 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();
}
推荐阅读
- excel - Sub Excel VBA的可选范围
- java - 如何在两个java类中使用Arraylist
- android - 如何跨导航堆栈重用android片段(Android中的iOS标签栏实现)?
- unit-testing - 单元测试新手,希望对此单元测试有一些意见
- python - Discord Bot 加入语音频道
- php - 在 laravel 中使用 foreach 循环仅显示一个数组
- python - 基于某个标记作为分隔符拆分 HTML 的优雅方法
- ms-access - 如何用 MS-Access 宏替换导出文件?
- mysql - 如何查看使用最多 CPU 的 MySQL 进程?
- javascript - 使用 Vuetify Switch 更改 Vuex 状态