hereの提案に従って、プロジェクトの Main メソッドでログインフォームを次のように作成します。
[MTAThread]
static void Main()
{
AppDomain.CurrentDomain.UnhandledException += Unhandled;
frmLogin loginForm = new frmLogin();
if (loginForm.ShowDialog() != DialogResult.OK)
{
// If they hit "Close" just use the default values for now (for testing)
HHSConsts.userName = "duckbilled";
HHSConsts.pwd = "platypus";
HHSConsts.currentSiteNum = "Packers20Seahawks19";
}
else
{
HHSConsts.userName = loginForm.UserName;
HHSConsts.pwd = loginForm.Password;
HHSConsts.currentSiteNum = loginForm.SiteNumber;
}
loginForm.Dispose();
Application.Run(new frmMain());
}
ログイン フォームには、[OK] と [閉じる] の 2 つのボタンがあります。
private void buttonOK_Click(object sender, EventArgs e)
{
HHSConsts.userName = textBoxUsername.Text.Trim();
HHSConsts.pwd = textBoxPwd.Text.Trim();
HHSConsts.currentSiteNum = listBoxSitesWithFetchedData.SelectedItem.ToString();
// TODO: Prevent shutdown if "OK" is selected and there are any missing or bogus values?
this.Close();
}
private void buttonClose_Click(object sender, EventArgs e)
{
this.Close();
}
これはかなりうまく機能しますが、ログイン フォームが閉じてからメイン フォームが表示されるまでの間に明確な遅延があります。間隔があまり目立たないように、このギャップを埋める方法はありますか?
アップデート
これを置き換える:
Application.Run(new frmMain());
...これとともに:
Application.Run(new Form());
... Program.cs では、次のようになります。
ログイン フォームの [OK] ボタンをクリックすると、アプリが閉じます (メイン フォームは表示されません)。
ログイン フォームの [閉じる] ボタンをクリックすると、ログイン フォームのすべてのコントロールが消えますが、フォームはそのままです...?!?