我为WinForm应用程序创建了一个非常基本的启动画面。
应用程序必须在加载时连接到数据库,因此我创建了一个像这样的OnLoad方法:
private void MainForm_OnLoad(object sender, EventArgs e)
{
SplashScreen.ShowSplashScreen();
PerformConnection();
SplashScreen.CloseSplashScreen();
}
启动画面是一种简单的形式。 ShowSplashScreen方法创建表单并显示它,CloseSplashScreen关闭表单。
一切似乎都有效,除了当闪屏关闭时,主窗体失去焦点并被之前选择的窗口隐藏。
我不明白为什么,也不知道如何解决这个问题。
答案 0 :(得分:4)
答案 1 :(得分:2)
你应该不同地做。可以在主窗体之前调用启动画面,这就是你可以做到的(代码如下)。 通过使用DialogResult.OK,将代码返回到Program类,并继续创建(并打开)Form1(您的主窗体)。
static class Program
{
[STAThread]
static void Main()
{
using (SplashScreen sp = new SplashScreen())
{
sp.StartPosition = FormStartPosition.CenterScreen;
if (login.ShowDialog() == DialogResult.OK)
{
Application.Run(new Form1());
}
}
}
}
public partial class SplashScreen : Form
{
public SplashScreen()
{
InitializeComponent();
DoTheWork();
}
private void DoTheWork()
{
//...
//and on the end
this.DialogResult = DialogResult.OK;
}
}
答案 2 :(得分:-1)