Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使表单最顶层,但不超过其他应用程序_C#_.net_Vb.net_Winforms - Fatal编程技术网

C# 使表单最顶层,但不超过其他应用程序

C# 使表单最顶层,但不超过其他应用程序,c#,.net,vb.net,winforms,C#,.net,Vb.net,Winforms,在vb.net或c#WinForms中,如何使窗体在项目中的其他窗体之上,而不是在其他应用程序的窗口之上 使用form.topmost=True将表单置于其他应用程序之上 编辑 我不是在寻找闪屏 下面是此表单的预期行为示例。它仍然位于应用程序中的所有其他内容之上,您可以与它及其背后的表单进行交互 您可以使用SetWindowPos方法将窗口置于前端,而无需激活它。你可以在计时器中调用它来保持它在顶部(但这可能会将它放在其他应用程序之前,因此你只想在你是激活应用程序时这样做),或者你必须检测其他窗

在vb.net或c#WinForms中,如何使窗体在项目中的其他窗体之上,而不是在其他应用程序的窗口之上

使用
form.topmost=True
将表单置于其他应用程序之上

编辑

我不是在寻找闪屏

下面是此表单的预期行为示例。它仍然位于应用程序中的所有其他内容之上,您可以与它及其背后的表单进行交互


您可以使用SetWindowPos方法将窗口置于前端,而无需激活它。你可以在计时器中调用它来保持它在顶部(但这可能会将它放在其他应用程序之前,因此你只想在你是激活应用程序时这样做),或者你必须检测其他窗体何时触发激活事件,然后调用它

internal const int SWP_NOMOVE = 0x0002;
internal const int SWP_NOSIZE = 0x0001;
internal const int SWP_SHOWWINDOW = 0x0040;
internal const int SWP_NOACTIVATE = 0x0010;
internal const int SWP_NOOWNERZORDER = 0x0200;
[DllImport("user32.dll", EntryPoint = "SetWindowPos")]
private static extern IntPtr SetWindowPos(IntPtr hWnd, int hWndInsertAfter, int x, int Y, int cx, int cy, int wFlags);
称之为:
SetWindowPos(窗体句柄,0,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW | SWP_NOACTIVATE)

要将表单置于应用程序上的其他表单之上,可以使用
BringToFront
方法

Application.OpenForms["MyForm"].BringToFront();

用户可以访问其他表单。

对于您的应用程序,最上面的=true应该可以正常工作。必须发生用户错误。

是否将其设置为模态?或者你想在它启动时访问它后面的表单吗?就像一个启动屏幕,在你的其他表单前面加载,而不是在另一个应用程序(如Chrome或Visual Studio)上加载@BrootsWaymb@BrootsWaymb不是。启动屏幕只是一个随意的例子。我假设你仍然可以从链接的副本中获得大部分答案。除非你想找一个模态形式,那就容易一点。如果是其他问题,你需要更清楚一点。你是对的,我在发布问题后发现了问题。谢谢