形式最顶层?

时间:2008-11-27 18:42:58

标签: c# .net

如何在所有其他应用程序上显示内容。我希望在我的程序的所有形式上显示某些内容,并在我的桌面上打开所有其他程序(不是我的)。

* Top大多数都不起作用我已经过测试,我的浏览器可以超出我的应用程序:S

这是我使用TopMost为TRUE时的图像。你可以看到我的浏览器已经结束了......

http://www.freeimagehosting.net/uploads/5a98165605.png

4 个答案:

答案 0 :(得分:12)

您可以使用表单实例并将属性 TopMost 设置为True。

<小时/> 如果您希望覆盖所有Windows,则可以使用 Win32 Api 调用另一种方式。

以下是您可以做的事情:

在表单类中添加:

[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern bool SetForegroundWindow(IntPtr hWnd);

在表单加载中,您可以添加:

SetForegroundWindow(this.Handle);

这应该可以解决问题。

更新

TopMost 应该完成这项工作但是:最顶级的OR / AND Win32 Api调用只能在Visual Studio中运行(适用于Vista和VS2008我测试过它...我不能告诉其他)。尝试使用/ bin目录中的.Exe运行该程序,它将起作用。

答案 1 :(得分:7)

Form.TopMost属性会将表单设置为所有其他正在运行的Windows应用程序(不仅仅是表单)上方的顶层表单。

myForm.TopMost = true; // This will do the job

答案 2 :(得分:2)

TopMost属性是您所需要的(从未遇到过问题)


在MSDN上它说:

  

最上面的表单是一种与所有其他(非最顶层)表单重叠的表单,即使它不是活动表单或前景表单。最顶层的表单始终显示在桌面上窗口的z顺序的最高点。

http://msdn.microsoft.com/en-us/library/system.windows.forms.form.topmost.aspx

答案 3 :(得分:0)

在我的团队中,我们有一个内部工具,在Windows启动后继续运行。它是一个WinMorm,TopMost设置为ture。在Vista上,有时候我们遇到了同样的问题。在非常随机的时间,表单将丢失TopMost属性,而其他非最顶层的窗口可能会出现在其上方。 我有一个研究日志,但没有找到答案,许多其他人也遇到同样的问题,似乎在Vista的非常低的水平上有一个关于TopMost属性的错误。