我的应用程序是一个基于系统托盘的弹出窗体。我在系统托盘中有一个NotifyIcon。当单击通知图标时,它将切换主窗体。当主窗体被停用时,它会隐藏自己。这基本上是大多数基于系统托盘的应用程序的标准行为。
当显示主窗体时,用户单击通知图标,人们会期望主窗体隐藏,这也是标准行为。但是,在Deactivate
事件处理程序中,我隐藏了主窗体。紧接着,在notify图标的Click
事件处理程序中,我们看到主窗体被隐藏,我们将其切换为再次显示。这是不正确的行为。
所以,我想知道,是否有一种方法可以在Deactivate
处理程序中知道,我们失去焦点的原因是否是用户单击了通知图标。或者,有没有其他更聪明的方法来处理这个问题?
- 谢谢-谢谢
1条答案
按热度按时间cig3rfwq1#
在
Deactivate
事件中,您可以取得NotifyIcon
的Icon
的Rectangle
,然后检查它是否为Contains()
的MousePosition
,进而决定是否为Close()
的MainForm
。我引用了这篇文章:How to obtain the icon rectangle of a NotifyIcon
字符串
这将引起另一个问题:当用户点击
NotifyIcon
触发MainForm
的Deactivate
事件后,如果点击其他窗口,则不会再触发MainForm
的Deactivate
事件。