我在我的一个子(模态)表单中使用NotifyIcon控件,它运行正常。按预期显示气球提示,处理鼠标事件等......但是当我期望它时,它并没有消失。具体来说,当我退出子表单并且父级重新控制时,图标仍然存在。它的工具提示是可访问的,所以它非常“活着”。
当我作为一个整体退出我的应用程序时,图像仍然保留,直到我将光标悬停在它上面。一旦被淹没,它就消失了。
我怎样才能让它正常运转?好的通常是一个坏词:-0如果创建它的表单消失,我怎么能让它消失?
有人可以解释导致这种情况的原因,我认为.net应该自行清理吗?
编辑:如果我以封闭的形式调用Dispose方法,那么这是有效的,但我真的必须这样做吗? ģ
答案 0 :(得分:5)
这是一个想法,不确定这是否会产生影响,但是当子表单关闭时,您是否在NotifyIcon上调用Dispose()?
编辑:刚刚看到你的编辑,是的,我对此有所帮助并不感到惊讶,是的,你应该这样做。在幕后,有些东西正在使用一些非托管资源,你需要释放它。通常,您的应用程序中实现您正在使用的IDisposable的任何内容,帮自己一个忙,然后处理它。答案 1 :(得分:5)
Icon.Visible = false
也会奏效。无论如何,仍应调用Dispose
来处置Windows句柄。
答案 2 :(得分:1)
如果您对新的程序实例清理系统托盘而不是尝试保证在任何类型的关闭时进行清理,那么following会模拟通知托盘清理。它使用SendMessage解决方案,该解决方案模拟用户鼠标悬停清理,并不需要实际移动用户的光标。
请注意,在Windows 7计算机上,名称Notification Area
应替换为User Promoted Notification Area
。