如果应用程序以系统启动,则Tray NotifyIcon丢失

时间:2013-08-26 17:13:32

标签: c# windows-xp system-tray

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

用户的“开始”菜单\“启动”文件夹中有一个应用程序的快捷方式,这会导致窗口启动时托盘中出现图标,大部分时间都是。

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

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

任何指针都将非常感激。谢谢!

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

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

1 个答案:

答案 0 :(得分:2)

我解决了这个问题,在我的表单构造函数结束时(在调用InitializeComponents之后)切换NotifyIcon组件的可见性(从false变为true)。