【发布时间】:2014-10-04 10:06:59
【问题描述】:
我有一个包含许多子表单的应用程序,当我切换到另一个应用程序时,
一些表单仍然位于顶部(我使用的是Form.TopMost 属性)。
我一直在寻找解决方案,但在这里找到了部分答案:
How to detect when an application loses focus?
C# form Activated and Deactivate events
但两者都不适合我。
Form.Deactivate 事件也会在主窗体失去焦点到子窗体时触发。
我想检查我的应用程序是否失去了对不同应用程序的关注,因此我可以隐藏所有子表单。
谢谢
编辑: 感谢@Hans Passant,我将 Form.TopMost 切换为 Show(Owner)。
【问题讨论】:
-
这是一个 XY 问题。 TopMost 属性被严重滥用,仅在极少数情况下才需要。改用拥有的窗口,Show(owner) 重载来显示它们。
-
@elimad 是的,但我想弄清楚用户是否切换了应用程序,然后隐藏所有表单。
-
@HansPassant,我正在使用 TopMost 作为 Find 表单,我希望它在用户决定关闭它之前一直位于顶部。
-
这是一个应该是自有窗口的标准示例。