【问题标题】:Main window appears behind other windows after splash screen启动画面后主窗口出现在其他窗口后面
【发布时间】:2015-09-25 11:38:57
【问题描述】:

我有一个带有初始屏幕的 Windows 窗体应用程序。当我运行应用程序时,初始屏幕显示正常,然后消失,并且加载了应用程序的主窗体。

但是,当我加载主窗体时,它会出现在包含应用程序的 Windows 资源管理器目录下。这是一段代码,它运行启动画面,然后是主窗体。

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {        
        public Form1()
        {
            Thread t = new Thread(new ThreadStart(SplashStart));
            t.Start();
            Thread.Sleep(1500);
            InitializeComponent();
            t.Abort();
        }        
        public void SplashStart()
        {
            Application.Run(new SplashScreen());
        }
    }
}   

如何让Form1 显示在所有其他窗口之上?

【问题讨论】:

  • 在主表单加载时尝试使用TopMostmsdn.microsoft.com/en-us/library/…
  • 不要使用TopMost,它会导致窗口总是停留在顶部。您在这里做错了一些事情,使用多个 Application.Run 调用(在 program.cs 文件中有一个),在线程上运行另一个表单等。从 program.cs 文件显示启动画面,而不是从您的主窗体,并且没有任何充分的理由为其使用单独的线程,实际上这不是一个好主意,因为 UI 项应该是单线程的,并且都在 UI 线程上运行。
  • 非常感谢 Ron Beyer .. 使用多个 Application.Run 调用根本原因。

标签: c# winforms


【解决方案1】:
Form1.Activate(); 

这应该使它成为焦点并放在前面。

MSDN 链接:system windows forms form activate

【讨论】:

    【解决方案2】:

    使用form.BringToFront() 将表单放在其他所有内容的前面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-30
      • 2019-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多