为什么隐藏拥有的窗口会在WinForms(.NET)中切换应用程序?

时间:2010-03-02 12:44:23

标签: c# .net linux winforms

我有一个覆盖屏幕的应用程序窗口,默认情况下隐藏了几个小工具窗口,它们的“所有者”属性设置为此主窗口。

当我显示一个工具窗口并单击其中一个按钮时,它会隐藏自己以显示另一个窗口。当我隐藏另一个工具窗口时Windows切换应用程序就像按下alt + tab一样。防止这种情况的唯一方法是在关闭(隐藏)工具窗口之前单击主应用程序窗口。

为什么应用程序切换发生以及如何防止这种情况发生?好吧,我可以明确告诉那些窗口将主窗口置于隐藏状态(我还没有尝试过,但我不喜欢这样做。)这只发生在那个窗口上设置所有者属性以防止它们显示在主窗口后面。

ps:这个全屏应用程序是一个游戏,那些窗口是菜单和设置屏幕等......

1 个答案:

答案 0 :(得分:1)

黑暗的问题,我无法复制并且之前没有听说过这个。当Windows窗口管理器被强制寻找另一个窗口以在当前关闭时关注焦点时,此行为是正常的。该应用程序没有任何启用的窗口。除非您在工具窗口获得焦点时故意将主窗口的Enable属性设置为False,否则应该不是您的应用中的情况。在不同的线程上运行窗口是一个长期的解释。

要尝试的是将工具窗口的ShowInTaskbar属性设置为false,这样用户必须始终通过主窗口重新聚焦应用程序。并确保窗口仅因MouseUp事件而关闭,因此鼠标捕获无法解决问题。并且,是的,明确地将主窗口集中在FormClosing事件中。