forms最顶层?
如何在所有其他应用程序上显示某些内容。 我希望在我的程序的所有forms上显示某些内容,并在我的桌面上打开所有其他程序(不是我的)。
* Top Most不起作用我已经测试过,我的浏览器可以超出我的应用程序:S
这是我使用TopMost为TRUE时的图像。 你可以看到我的浏览器已经结束了……
http://sofzh.miximages.com/c%23/www.freeimagehosting.net
您可以使用表单实例并将属性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的程序,它会起作用。
Form.TopMost属性将您的表单设置为所有其他正在运行的Windows应用程序(不仅仅是您的表单)上方的顶部表单。
myForm.TopMost = true; // This will do the job
TopMost属性是你需要的(从来没有遇到过这个问题)
在MSDN上它说:
最上面的表单是一种与所有其他(非最顶层)表单重叠的表单,即使它不是活动表单或前景表单。 最顶层的表单始终显示在桌面上窗口的z顺序的最高点。
http://msdn.microsoft.com/en-us/library/system.windows.forms.form.topmost.aspx
在我的团队中,我们有一个内部工具,在Windows启动后继续运行。 它是一个WinMorm,TopMost设置为ture。 在Vista上,有时候我们遇到了同样的问题。 在非常随机的时间,表单将丢失TopMost属性,而其他非最顶层的窗口可能会出现在其上方。 我有一个研究日志,但没有找到答案,许多其他人也有同样的问题,似乎在Vista的非常低的水平上有一个关于TopMost属性的错误。