C#-登录并显示用户名,根据登录标题禁用按钮

C#-登录并显示用户名,根据登录标题禁用按钮,c#,winforms,C#,Winforms,我正在创建一个登录表单(窗口表单),其中有一个Staff和businessmanager列值。当登录为true时,页面将重定向到其他页面,在那里她/他可以访问表单。表单中有一个按钮“查看主列表” 当用户登录为Staff时,他/她可以成功进入表单,但按钮处于禁用状态。根据用户帐户的不同,她/他的名字也会出现 与Business Manager的方法相同,但区别在于Business Manager可以查看主列表 在第二页 btn_masterlist.Enable = true; 这是我的登录页面

我正在创建一个登录表单(窗口表单),其中有一个Staff和businessmanager列值。当登录为true时,页面将重定向到其他页面,在那里她/他可以访问表单。表单中有一个按钮“查看主列表”

当用户登录为Staff时,他/她可以成功进入表单,但按钮处于禁用状态。根据用户帐户的不同,她/他的名字也会出现

与Business Manager的方法相同,但区别在于Business Manager可以查看主列表

在第二页

btn_masterlist.Enable = true;
这是我的登录页面

MySqlCommand cmd = new MySqlCommand("Select * from tbladmin where email='" + txt_username.Text + "' and password='" + txt_password.Text + "'", dt.connect);
MySqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows == true)
{
  dr.Read();
  Data.title = dr["title"].ToString();
  MessageBox.Show("You Have Successfully Signed In. Please Click \"OK\" to Continue...");
  Main menu = new Main();
  menu.Show();
  this.Hide();
 }
 else
 {
  MessageBox.Show(this, "Incorrect Username/Email or Password", "Sign Failed");
  return;
 }dr.Close();
这是桌子的结构

在注册过程中,在数据库中存储另一个字段,该字段应包含员工类型

 While(dr.read())
 {
     string EmployeeeType=dr["employeeType"].ToString();
     if(EmployeeType.Equals("manager"))
      frmMain.btnMasterList.Enabled=true;
     else
      frmMain.btnMasterList.Enabled=false;
 }
 frmMain.Show();
while循环应该只运行一次,因为数据库中只有一行与用户名和密码匹配


不要忘记将按钮的访问说明符公开。FrmMain是包含btnMasterList的表单的实例!你也可以使用get;设置

1-在主窗体中创建属性UserTitle

public string UserTitle { get; set; }
然后在创建主窗体时,将其传递给主窗体

Data.title = dr["title"].ToString();
Main menu = new Main();
menu.UserTitle = Data.title;
menu.Show();
this.Hide();
2-在主窗体中加载事件检查UserTitle是否为staff禁用它,否则启用它:

private void AdoSample_Load(object sender, EventArgs e)
{
    if(this.UserTitle.ToLower=="staff")
        this.btn_masterlist.Enabled = false;
    else
        this.btn_masterlist.Enabled = true;
}
请注意,强烈建议使用如下参数化查询:

MySqlCommand cmd= new MySqlCommand("Select * from tbladmin where email = @email and password = @Password");
cmd.Parameters.AddWithValue("@email", txt_username.Text);
cmd.Parameters.AddWithValue("@password", txt_password.Text);
MySqlDataReader dr = cmd.ExecuteReader();
//Your Other Codes ...

在注册过程中存储此信息后,检查用户是否为业务经理!如果标题为manager btnmasterList.enabled=false,如果它被初始化为true,我如何检查它,先生?@标记它取决于数据库表的结构,您能显示数据库表的外观吗?先生,我添加了我的表结构。@标记以防止应用程序中的SQL注入攻击,强烈建议使用参数化命令。谢谢您,先生!愿上帝保佑你,祝你有一个美好的一天!+:DSir,我如何使用它?@mark您可以简单地使用它,而不是您的等效代码。谢谢您,先生!上帝保佑!+:D