Как получить enum из другой формы - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть таблица с именами пользователей, паролями и ролями пользователей.

Получен регистр переключения с условием: role_ID из таблицы UserRole, который соответствующим образом меняет перечисление roleType.

Я пытаюсь получить доступ к этому перечислению из формы главного меню.

, если 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 голосов
/ 02 декабря 2018
if(Roles.Role == Roles.RoleType.doctor)
//do something

Сделайте RoleType статическим (вы можете создать класс Roles и добавить в него enum) - если вы сделаете это так, вы можете изменить его состояние, как в примере.Вы также можете использовать переменные сеанса, если вы работаете в веб-приложении.

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...
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...