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 回答
1

我想出适合我的问题的解决方案的方式与我开始的方式有点不同

登录表单

public partial class frmLogin : Form
{

    #region "Properties"

    private bool _Authenticated = false;

    public bool Authenticated
    {
        get { return _Authenticated; }
        set { _Authenticated = value; }
    }

    #endregion
 public void Login()
    {

        if (GetLoginAuthentication(cbxLoginName, txbPassword))
        {
            this.Hide();
            //MessageBox.Show("Successfull");
            Authenticated = true;
            //frmCommissionReport frm = new frmCommissionReport();
            //frm.ShowDialog();


        }
        else
        {
            Authenticated = false;
            MessageBox.Show("Username or Password not recognised");

        }

    }

主要形式

public frmCommissionReport()
    {
        frmLogin login = new frmLogin();
        login.ShowDialog();

        if (login.Authenticated)
        {// block of code
}

这工作正常,没有任何问题

于 2013-08-30T14:58:46.973 回答
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 回答