一个关于托盘 NotifyIcon 的严重BUG问题怎么办??????

nicholsky 2008-09-07 05:16:32
系统托盘NotifyIcon没有添加右键菜单就没事,但如果添加了右键菜单,就有问题了。

但右击托盘时,弹出托盘的菜单后,按ALT+F4,会发现托盘消失,因为NotifyIcon不能继承,也没有判断这个的事件,因为测试过NotifyIcon并不是Visible=false,也没有dispose,那就怪了,怎么能让他重现,或者能拦截用户在NotifyIcon的ALT+F4这些动作,网上也找不到任何这类的内容,所以来问下大家,讨论一下,谢谢。
...全文
183 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
topman2003nz 2009-03-03
  • 打赏
  • 举报
回复
关于托盘 NotifyIcon 的严重BUG问题, 能告诉我们解决方法吗, 谢谢!
nicholsky 2008-11-05
  • 打赏
  • 举报
回复
很久沒來了,不好意思,5樓的提示後,終於我找到方法解決了,遲些有空再把方法帖出來,先結帳了,謝謝5樓的。
  • 打赏
  • 举报
回复
其实这个问题应该是NotifyIcon不算一个完整的控件,应为其可以包含于窗口里面。它只要获取了焦点,再按ALT+F4就直接消失不见了,但是其在窗体的状态也没有改变,其原因主要是因为NotifyIcon的icon链接被消除了,就是我们设置的那个图标没有了,所以我们看到的就是NotifyIcon不见了。我们可以在窗体最小化那个事件里面再设置一道其的图标。
this.notifyIcon1.Icon = icon1;
this.notifyIcon1.Visible = true;
也就是说,当你用ALT+F4关闭了托盘图标,但是界面还在的时候,你点击最小话,则图标又出来了。
问题只能分析到这里了。至于屏蔽ALT+F4不好实现,因为NotifyIcon已经不算存在于窗体中,所有我们用窗体的键盘事件判断是无效的。
问题还有待分析。
nicholsky 2008-09-08
  • 打赏
  • 举报
回复
2楼的意思是当托盘右键菜单关闭时把主窗口显示出来,但这样也无法让托盘重新显示,所以不能解决这个BUG,因为其它程序的托盘都不会有这问题,就C#做的winform有。也不是3楼的意思。

当托盘存在右键菜单时,在托盘按右键,出现了托盘的右键菜单,然后按Alt,菜单就隐藏了,再按F4,托盘就无缘无故地消失,而且不是visible,也不是dispose,无法再让他出来。我试过很人做的程序,同样存在这个问题。
nicholsky 2008-09-08
  • 打赏
  • 举报
回复
5楼的说得还是真的,是图标消失了,只需要重新设它的图标就行了,不需要设visible,因为这个一直是true的。

但感觉还不是一个好的解决办法,例如说我们已经把主窗体隐藏后只剩下一个托盘,那么这时打开托盘右键菜单,来个Alt+F4,那还是照样,不过5楼已经把他消失的根本原因讲出来了,我觉得还有一个问题是出在托盘的右键菜单上,如果设置某些东西可能可以避免这样而得到一个最完善的解决办法,我也正在想。
51Crack 2008-09-07
  • 打赏
  • 举报
回复
弹出菜单按ALT+F4也是关闭主窗体,Form_Closing里是不是NotifyIcon.Visible=false ?
wdgphc 2008-09-07
  • 打赏
  • 举报
回复
private void contextMenuStrip1_Closing(object sender, ToolStripDropDownClosingEventArgs e)
{
this.Visible = true;
}

不知道行不行啊?
LovingAlison 2008-09-07
  • 打赏
  • 举报
回复
呵呵 我试下 以前真不知道 帮你顶

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧