在vb.net或c#WinForms中,如何将表单放在项目中其他表单的最顶层,而不是在其他应用程序的窗口上?
使用form.topmost = True
将表单放在其他应用程序之上。
修改
我不正在寻找启动画面。
以下是此表单的预期行为示例。它仍然是应用程序中其他所有内容的顶部,您可以与它以及它背后的表单进行交互。
答案 0 :(得分:1)
要将表单放在应用程序的其他表单之上,您可以使用BringToFront
方法。
Application.OpenForms["MyForm"].BringToFront();
用户可以访问其他表格。
答案 1 :(得分:1)
topmost = true应该适用于您的应用程序。必须发生用户错误。
答案 2 :(得分:0)
您可以使用SetWindowPos方法将窗口置于前面而不激活它。您可以在计时器中调用它以使其保持在最前面(但这可能会将其置于其他应用程序之前,因此如果您是激活应用程序,则只需要这样做)或者您必须检测其他表单何时触发Activated事件然后调用它。
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(form.Handle,0,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW|SWP_NOACTIVATE);