我正在尝试向我的数据库应用程序添加一个安全模块,实际上我想要做的是每当我点击登录按钮时,它会退出登录表单并根据用户的角色打开主窗体。 我有以下代码:
登录表格
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();
}
但由于某些原因,每当我填写登录详细信息并单击“登录”按钮时,它会再次打开相同的登录表单,并且每当我单击“登录按钮”而不是将我重定向到主表单时,都会继续复制登录表单
答案 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();
}