私には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およびWindowStateNormalに設定されます。
また、これは、debugフォルダーでapplication.exeを実行する(またはコピーする)場合にのみ発生します。つまり、VisualStudio2010でデバッグする場合には発生しません。
編集:これを追加するために、私も試しました:
private void frmAppLogin_Load(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Normal;
}
それは役に立たなかった。