我有 3 个表单 - 主要表单是 Form1,其他表单是启动表单,然后是登录屏幕。启动画面首先显示并填充服务器。然后显示frmAppLogin,用户输入硬编码密码,结果返回form1。
public Form1()
{
_assembly = Assembly.GetExecutingAssembly();
Stream icon = _assembly.GetManifestResourceStream.....
this.Icon = new Icon(icon);
Thread t = new Thread(new ThreadStart(SplashScreen));
t.Start();
InitializeComponent();
PopulateServers();
//Thread.Sleep(800);
Form frmLogin1 = new frmAppLogin();
t.Abort();
frmLogin1.ShowDialog();
DialogResult res = new DialogResult();
res = frmLogin1.DialogResult;
if (res == DialogResult.OK)
{
_LoggedIn = true;
}
else
{
_LoggedIn = false;
}
}
这是 form1_load 的代码:
private void Form1_Load(object sender, EventArgs e)
{
if (_LoggedIn)
{
try
{
blah blah........
}
catch
{
MessageBox.Show("Error accessing resources!");
}
}
else
{
this.Close();
}
}
以及登录表单的代码:
public frmAppLogin()
{
InitializeComponent();
this.WindowState = FormWindowState.Normal;
}
private void btnAppLogin_Click(object sender, EventArgs e)
{
if (txtAppPass.Text.ToString() == requiredPass)
{
this.DialogResult = DialogResult.OK;
this.Close();
}
else
{
txtAppPass.Clear();
txtAppPass.Focus();
MessageBox.Show("Incorrect Password");
}
}
问题是当启动画面消失时,登录表单会在瞬间弹出,但会立即最小化到任务栏。
Startposition 通过 GUI 设置为 CenterScreen 和 WindowState Normal。
此外,这只发生在我在调试文件夹中运行 application.exe(或从中复制它)时,即当我在 Visual Studio 2010 中调试时不会发生这种情况。
编辑:只是为了添加这个,我也尝试过:
private void frmAppLogin_Load(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Normal;
}
这没有帮助。