在WinForm的项目C#一个窗体阻塞另一个
题
我在以下配置中使用,其使用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的构造运行的其余部分。如何可以容易地阻止这种阻塞行为?
解决方案
我已经回答了你与你问同样的事情,其他问题的工作示例:
其他提示
一般情况下,你需要显示在一个单独的线程启动画面,并让主线程继续同负荷。不平凡的 - 特别是,你将需要使用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负荷通常在显示初始屏幕。
不隶属于 StackOverflow