我有一个包含用户名,密码和用户角色的表
从UserRole表中获取了一个条件为role_ID的切换案例,该案例相应地更改了角色类型枚举。
我正努力从主菜单表单访问此枚举。
如果RoleTypes是frmLogin.RoleTypes.Doctor
然后显示相关按钮。
那就是我想要做的。
这就是我的位置。
登录屏幕
private void btnLogin_Click(object sender, EventArgs e)
{
public enum RoleTypes
{
practiceManager,
doctor,
receptionist
}
SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename....)
SqlCommand cmd = new SqlCommand("SELECT * FROM Users WHERE Username = @username and Password = @password", conn);
cmd.Parameters.AddWithValue("@username", txtBoxUsername.Text);
cmd.Parameters.AddWithValue("@password", txtBoxPassword.Text);
conn.Open();
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
conn.Close();
bool loginSuccess = (ds.Tables[0].Rows.Count == 1);
if (loginSuccess)
{
switch (ds.Tables[0].Rows[0]["Role_ID"])
{
case 1:
{
RoleTypes roleType = RoleTypes.practiceManager;
Console.WriteLine("Role type changed to " + roleType);
}
break;
case 2:
{
RoleTypes roleType = RoleTypes.doctor;
Console.WriteLine("Role type changed to " + roleType);
}
break;
case 3:
{
RoleTypes roleType = RoleTypes.receptionist;
Console.WriteLine("Role type changed to " + roleType);
}
break;
default:
break;
}
}
Console.WriteLine("Logged in.");
FrmMenu menu = new FrmMenu();
menu.Show();
this.Hide();
}
else
{
MessageBox.Show("Invalid username or password.", "Error!", MessageBoxButtons.RetryCancel);
Console.WriteLine("Not logged in");
}
}
}
主菜单
private void FrmPatients_Load(object sender, EventArgs e)
{
FrmLogin.RoleTypes roleType = new FrmLogin.RoleTypes();
if (roleType == FrmLogin.RoleTypes.doctor)
{
this.btnNewPatient.Visible = false;
}
}
我知道我正在创建一个RoleTypes的新实例,但是如何引用现有实例?
预先感谢!
答案 0 :(得分:1)
if(Roles.Role == Roles.RoleType.doctor)
//do something
将RoleType设为静态(您可以创建Roles类并在其中添加枚举)-如果您要那样做,则可以如示例中那样更改其状态。如果您正在使用Web应用程序,则还可以使用Session变量。
static class Roles
{
public RoleType Role;
public enum RoleType
{
//your role types
}
}
private void btnLogin_Click(object sender, EventArgs e)
{
switch(i)
{
case 1: { Roles.RoleType = Roles.RoleType.practiceManager; break; }
//rest of cases...
}
}