c#中最顶层的窗口

时间:2015-11-25 07:37:43

标签: c# .net

我有一个表单应用程序,我希望它成为最顶层的。我用

 SetWindowPos(this.Handle, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS);

这个函数,它工作正常。但是当任务管理器属性总是在顶部被检查时它失败了。任务管理器将显示为最顶层的窗口。          所以我担心的是,如果有任何方法可以实现它,或者我们不能与任务管理器一起完成它。它总是出现在顶部,或者我错过的任何其他东西,或者做错了。

2 个答案:

答案 0 :(得分:2)

MSDN说HWND_TOPMOST只是Places the window above all non-topmost windows.换句话说,有两组窗口:非最顶层(通常)和最顶层,你只是将窗口发送到另一组。

如果还有其他最顶层的窗口(在您的情况下为=任务管理器),您可以像往常一样在非最顶层的窗口之间切换它们,并且它们将重叠,具体取决于当前活动的窗口。

如果您想强制您的窗口始终位于最顶层,我猜您必须注意停用窗口(WM_ACTIVATE消息),然后按Z顺序移动窗口并关注您的窗口窗口返回 - 通过这种方式,您可以防止出现问题,例如让您的窗口唯一可见,但让键盘专注于另一个窗口。

答案 1 :(得分:0)

如果您只是希望您的应用程序始终位于其他应用程序的顶部,则可以尝试此操作。

private void timer1_Tick(object sender, EventArgs e)
        {
            this.TopMost = true;
        }