1

我有一个针对 .NET 框架 2.0 的 C#(VS 2012 Express),它使用 NotifyIcon 组件创建托盘图标。

在用户的 Start Menu\Startup 文件夹中有一个应用程序的快捷方式,大多数情况下,当 Windows 启动时,该图标会出现在托盘中。

但是,在某些情况下,可执行文件会在系统启动时启动,但托盘中缺少图标。但是,我没有一套可靠的步骤来重现此问题。

通过阅读这篇文章,看起来我应该听 shell 启动事件并重新绘制我的托盘图标,但是我不确定如何去做,因为 .NET 正在为我管理低级调用: http ://msdn.microsoft.com/en-us/library/windows/desktop/cc144179(v=vs.85).aspx

任何指针将不胜感激。谢谢!

更新: 仅当我将 Windows 设置为自动登录到默认用户帐户时,才会出现此问题。如果我手动注销然后再次登录,我的图标会正确显示。

更新:看来,如果我手动关闭并重新启动 Explorer.exe,图标会正确重绘。

4

1 回答 1

2

我通过在表单构造函数的末尾(在调用 InitializeComponents 之后)切换 NotifyIcon 组件的可见性(从 false 到 true)来解决这个问题。

于 2013-08-28T17:55:04.087 回答