如何在所有其他应用程序上显示内容。我希望在我的程序的所有形式上显示某些内容,并在我的桌面上打开所有其他程序(不是我的)。
* Top大多数都不起作用我已经过测试,我的浏览器可以超出我的应用程序:S
这是我使用TopMost为TRUE时的图像。你可以看到我的浏览器已经结束了......
答案 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属性的错误。