如何从另一种形式获取枚举

时间:2018-12-01 23:41:17

标签: c# winforms enums

我有一个包含用户名,密码和用户角色的表

从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的新实例,但是如何引用现有实例?

预先感谢!

1 个答案:

答案 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...
}
}