我有一个使用2个表单的应用程序,主表单和Splash表单用于以下配置:
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();
}
}
注意:使用以下代码创建主窗体:
Application.Run( new MainForm() );
上面的问题是除非使用
关闭启动,否则不会发生启动配置splash.Close();
仅当发生这种情况时,MainForm构造函数的其余部分才会运行。我怎样才能轻松阻止这种阻止行为?
答案 0 :(得分:1)
通常,您需要在单独的线程上显示启动画面,并让主线程继续加载。这不是微不足道的 - 特别是,你需要使用Control.Invoke
让闪屏在准备就绪时关闭(线程亲和力)...
答案 1 :(得分:1)
我已经就你要求同样事情的另一个问题的答案向你回复:
答案 2 :(得分:0)
使用splash.Open()而不是splash.OpenDialog(),这不会发生。
答案 3 :(得分:0)
基本上,您只想向您展示启动表单,但不要让它阻止主表单。
以下是我的表现:
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。