我在以下配置中使用,其使用2种形式中,主要形式和飞溅形式的应用程序:

public class MainForm : Form
{
    public MainForm()
    {
       SplashScreen splash = new SplashScreen();

       // configure Splash Screen
    }
}


public class SplashScreen
{
    public SplashScreen()
    {
       InitializeComponent();

       // perform initialization

       this.ShowDialog();
       this.BringToFront();
    }
}

NB:主要形式用下面的代码创建的:

Application.Run( new MainForm() );

上面的问题是,飞溅的结构中不会发生,除非飞溅是封闭的

splash.Close();

,只有当这种情况发生时确实的MainForm的构造运行的其余部分。如何可以容易地阻止这种阻塞行为?

有帮助吗?

解决方案

我已经回答了你与你问同样的事情,其他问题的工作示例:

C#的WinForms启动(飞溅)形式不隐藏

其他提示

一般情况下,你需要显示在一个单独的线程启动画面,并让主线程继续同负荷。不平凡的 - 特别是,你将需要使用Control.Invoke问闪屏时准备(线程关联度)...

关闭本身

使用splash.Open()而不是splash.OpenDialog(),这将不会发生。

基本上,你只想告诉你飞溅的形式,但不能让它阻塞的主要形式。

下面是如何我已经做到了:

class MainForm : Form {

    SplashScreen splash = new SplashScreen();  //Make your splash screen member

    public MainForm()
    {
        splash.Show();  //Just show the form
    }

}

然后在你的MainForm_Load你做你的初始化为正常。

现在,当您的形式准备好被显示(MainForm_Shown):

public MainForm_Shown()
{
    splash.Close();
}

这让你的MainForm负荷通常在显示初始屏幕。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top