1

データベース アプリケーションにセキュリティ モジュールを追加しようとしていますが、実際にやろうとしているのは、[ログオン] ボタンをクリックするたびに、ログイン フォームを終了し、ユーザーの役割に応じてメイン フォームを開くことです。次のコードがあります。

ログインフォーム:

public void Login()
    {
        frmCommissionReport _commReport = new frmCommissionReport();

        if (_commission.Login(cbxLoginName, txbPassword))
        {
            MessageBox.Show("Successfull");
             // close this form - do not exit the application
            frmCommissionReport frm = new frmCommissionReport();
            this.Close();
            frm.ShowDialog();

        }
        else
        {

            MessageBox.Show("Username or Password not recognised");

        }

    }

    private void btnLogin_Click(object sender, EventArgs e)
    {
        Login();

    }

メインフォーム (frmCommissionReport)

public frmCommissionReport()
    {

        InitializeComponent();

        _login.ShowDialog();

    }

しかし、何らかの理由で、ログインの詳細を入力してログイン ボタンをクリックすると、同じログイン フォームが再び開き、メイン フォームにリダイレクトするのではなく、ログイン ボタンをクリックするたびにログイン フォームが複製され続けます。

ここに画像の説明を入力

4

3 に答える 3

2

ログインに成功すると、別の frmCommissionReport() がインスタンス化され、_login.ShowDialog() が呼び出されます (Login の新しいインスタンスを想定しています)。 this.Close() は、既存のログイン フォームを閉じます。新しい frmCommissionReport() インスタンスに関連付けられた新しいもの。

于 2013-08-29T16:17:02.013 に答える
0

this.close を this.hide に変更してみてください

if (_commission.Login(cbxLoginName, txbPassword))
    {
        MessageBox.Show("Successfull");
         // close this form - do not exit the application
        frmCommissionReport frm = new frmCommissionReport();
        this.hide();
        frm.ShowDialog();

    }
于 2013-08-30T09:51:36.193 に答える