3

実行する簡単なプログラムがありますが、その前に、情報が正しいかどうかを検証するログイン フォームをポップアウトします。その場合、ログイン フォームが閉じてメイン フォームが起動します。ただし、メイン フォームを開いた後にログイン フォームを閉じると、アプリケーション全体がシャットダウンします。

私の program.cs は、新しい frmLogin を実行するだけです。ログインするとこうなります。

frmMain frm = new frmMain(UsernameTextBox.Text, PasswordTextBox.Text);
frm.Show();
this.Close();

どうすればそれを抑えることができますか?ありがとう

4

4 に答える 4

0

Panel新しいフォームの代わりにを使用することをお勧めします。ログイン コントロールを に配置し、Panel最初に表示します。ユーザーのログインが成功したら、パネルを非表示にするか、フォームから削除します。次に、メイン フォーム コントロールを表示するパネルを作成します。

if(IsLoginSuccess)
{
    panel.Visible = false;
    mainFormControlsPanel.Visible = true;
}

さらに、それはあなたのアプローチよりも速いはずです。

それが役に立てば幸い。

于 2013-08-12T14:21:55.727 に答える
0

次のようにするには、program.cs をセットアップする必要があります。

DialogResult result = DialogResult.Cancel;

while (result != DialogResult.OK)
{
    using (LoginForm loginForm = new LoginForm())
    {
        result = loginForm.ShowDialog();

        if (result != DialogResult.OK) continue;

        if (!AuthenticateCredentialsSomehow.Authenticate(loginForm.Username, loginForm.Password))
        {
            MessageBox.Show("Login Failed!");
            result = DialogResult.Cancel;
            continue;
        }

        MainForm mainForm = new MainForm(loginForm.Username, loginForm.Password);
        Application.Run(mainForm);
    }
}

このようにして、ログイン フォームは終了すると消え、ログインが成功するとアプリケーションがメイン フォームで実行されます。

于 2013-08-12T14:26:48.960 に答える