我有一个带有登录系统的 C# 应用程序,它工作正常,但我想要的是用户可以注销并再次登录,以便主窗体中的菜单将改变其可见性,这就是我的做法。我有一个登录表单、主表单和一个最终用户类。
mainform 是程序在加载时首先运行的,它将显示登录表单的对话框。
在登录代码中。它将用户名和密码传递给最终用户类并检查属性 loginsuccess
public partial class Login : Form
{
private void cmdlogin_Click(object sender, EventArgs e)
{
if (IsEmpty())
{
MessageBox.Show("Please enter username/password.");
TxtFocus();
}
else
{
EndUser.LogIn(txtusername.Text, txtpassword.Text);
if (EndUser.LogInSucces)
{
}
else
{
}
}
}
}
在最终用户类中,它将打开与数据库的连接并搜索用户名和密码是否可用并将属性 loginsuccess 更改为 true 并将角色属性更改为枚举中的适当属性。
之后,登录表单将关闭以显示主表单。主窗体将检查用户的角色并设置菜单的可见性。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Login loginFrm = new Login();
loginFrm.ShowDialog();
this.IsMdiContainer = true;
}
private void Form1_Load(object sender, EventArgs e)
{
if (EndUser.LogInSucces) {
switch (EndUser.GetRole())
{
case EndUser.Role.Principal:
PrincipalSettings();
break;
case EndUser.Role.Admission:
AdmissionSettings();
break;
case EndUser.Role.Registrar:
RegistrarSettings();
break;
case EndUser.Role.Faculty:
FacultySettings();
break;
}
}
}
#region menus visibility
我尝试使用命令 application.restart() 重新启动应用程序,因为它将开始登录流程,但这并不好,因为当我在程序中执行某些操作然后注销时,我会收到错误消息。你能提供一些建议吗?