![]() |
1
21
没有办法做到这一点。Windows不会轮询您的程序以查看它是否仍然存在。因此,您的图标将一直保留在系统托盘中,直到您告诉它离开(正常退出),或者用户执行一些操作来启动对您的程序的调用(如mouseover)。只有这样,shell才会知道您的程序已经停止运行,它需要清理您的图标。 |
![]() |
2
4
您有几个选项: 1)编写一个根结构异常处理程序,确保在退出前销毁图标。这需要一些努力-但您基本上可以将自己未处理的异常处理程序添加到Windows中,在许多形式的“boom”中都会调用该异常处理程序,这样您就有了一些最后的清理机会。 2)编写一个监视应用程序,它休眠在主进程句柄上,并在图标唤醒时(主应用程序已停止)将其杀死。为了使后一种方案能够很好地工作,您可能希望主进程不杀死图标本身-或者您可以创建一种方法来告诉监视器应用程序它应该退出而不销毁图标(让监视器应用程序在进程句柄和命名事件上都休眠-如果被事件唤醒,那么它只会死而不在MA之后清除。在应用程序中)。 |
![]() |
3
3
退出之前,请将NotifyIcon Visible属性设置为false。 |
![]() |
4
3
您需要在NotifyIcon上调用Dispose,它才能离开托盘。 编辑:你可以在你的program.cs中加入一个事件。对于所有的Windows应用程序,您都将拥有如下功能:
应用程序类有几个事件,您可以利用这些事件来了解应用程序何时死亡:
|
![]() |
5
-1
我们可以在表格关闭前隐藏trayicon。 添加窗体关闭事件
|