【发布时间】:2017-01-02 14:26:08
【问题描述】:
我在 C# 中有一个带有 TopMost = true 的 winform 工具窗口,在 XP 上运行,从 Excel 加载项中显示。当显示表单时,我点击 Alt+Tab,它让我回到 Excel。如果我再次点击 Alt+Tab,我希望它会带我回到我的表单,但它会转到下一个窗口(在本例中为 Visual Studio)。任何后续 Alt+Tab 调用在 Excel 和 Visual Studio 之间交替。另外,如果我 Alt+Shift+Tab,它会回到我的表单(所以它仍然是订单的一部分,只是订单不是我想要的)。
如果我简单地设置TopMost = false,一切都会按预期进行。我刚刚用一个全新的空项目复制了这个——实际上我唯一做的就是制作一个 TopMost 表格。它似乎与 TopMost 属性完全隔离。
当然,我希望 Alt+Tab 以我期望的方式工作。 有什么想法吗?
【问题讨论】:
-
当表单失去焦点时,您能否将 TopMost 设置为 False,或者这样做会破坏整个目的。
-
不幸的是,没有达到整个目的(我想让表格半透明并漂浮在 Excel 上)。我没有从您链接的问题中找到任何有意义的内容:在我的重现中,除了 TopMost 之外,它似乎并不特定于任何东西(而且问题看起来正试图达到完全相反的效果)。
-
也许您可以将
alt+tab作为全局热键,并即时禁用TopMost。我知道一个黑客,但这是我得到的最好的。 stackoverflow.com/questions/2450373/… -
我认为这是设计使然。 Alt+Tab 很可能意味着“切换到现在不在顶部的另一个窗口”。您永远不需要帮助切换到顶部的窗口,它很容易到达。