我有一个覆盖屏幕的应用程序窗口,还有几个默认隐藏的小工具窗口,它们的“所有者”属性设置到这个主窗口。
当我显示一个工具窗口并单击其中一个按钮时,它会隐藏自己以显示另一个窗口。当我隐藏另一个工具窗口时,Windows 会像按 alt+tab 一样切换应用程序。防止这种情况的唯一方法是在关闭(隐藏)工具窗口之前单击主应用程序窗口。
为什么会发生应用程序切换以及如何防止这种情况发生?好吧,我可以明确地告诉那些窗口将主窗口前面隐藏起来(我还没有尝试过,但我不喜欢这样做。)这只有在 Owner 属性设置在那个窗口上时才会发生,以防止它们不会显示在主窗口后面。
ps:这个全屏应用程序是一个游戏,那些窗口是菜单和设置屏幕等...
最佳答案
模糊的问题,我无法重现,之前也没有听说过。当 Windows 窗口管理器被迫寻找另一个窗口以在当前窗口关闭时提供焦点时,此行为是正常的。并且该应用程序没有任何已启用的窗口。在您的应用程序中不应该是这种情况,除非您在工具窗口获得焦点时有意将主窗口的 Enable 属性设置为 False。在不同的线程上运行窗口是一个长期的解释。
可以尝试将工具窗口的 ShowInTaskbar 属性设置为 false,这样用户必须始终通过主窗口来重新聚焦应用程序。并确保窗口只因 MouseUp 事件而关闭,这样鼠标捕获就不会把事情搞砸了。并且,是的,在 FormClosing 事件中明确聚焦主窗口。
关于c# - 为什么在 WinForms (.NET) 中隐藏拥有的窗口切换应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2363128/