单击登录按钮从一个表单重定向到另一个表单

时间:2013-08-29 15:59:08

标签: c# winforms

我正在尝试向我的数据库应用程序添加一个安全模块,实际上我想要做的是每当我点击登录按钮时,它会退出登录表单并根据用户的角色打开主窗体。 我有以下代码:

登录表格

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();

    }
  

但由于某些原因,每当我填写登录详细信息并单击“登录”按钮时,它会再次打开相同的登录表单,并且每当我单击“登录按钮”而不是将我重定向到主表单时,都会继续复制登录表单

enter image description here

3 个答案:

答案 0 :(得分:2)

当你成功登录时,你正在实例化另一个frmCommissionReport(),它又调用_login.ShowDialog()(我假设在一个新的Login实例上),而this.Close()正在关闭现有的Login表单,而不是与新frmCommissionReport()实例关联的新表单。

答案 1 :(得分: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
}

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

答案 2 :(得分: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();

    }