在 WinForms 中禁用用户登录按钮

时间:2020-12-21 11:29:40

标签: c# visual-studio winforms

在我的 WinForms 应用程序中,我有 3 个表单,

  1. 登录表单
  2. 主要形式
  3. 数据输入表

当登录为“用户”时,应打开主窗体。但是在子表单中“数据输入”-“button1”应该被禁用。

当登录为“管理员”时,主表单应该打开。但是在子表单中“数据输入”-“button1”应该被启用。

我已尝试使用以下代码,但无论谁登录,button1 都可以正常工作。

请指导我如何实现这一目标:

private void btnlogin_Click(object sender, EventArgs e)
{
    if(cmbusername.Text != "" && txtpassword.Text != "")
    {
        SqlConnection con = new SqlConnection(cs);
        string query = "select * from login where username = @user and password = @pass";
        SqlCommand cmd = new SqlCommand(query, con);
        cmd.Parameters.AddWithValue("@user", cmbusername.Text);
        cmd.Parameters.AddWithValue("@pass", txtpassword.Text);

        con.Open();

        SqlDataReader dr = cmd.ExecuteReader();
        if (dr.HasRows == true)
        {
            if(cmbusername.Text == "USER")
            {
                FormDataEntry frmd = new FormDataEntry();
                frmd.button1.Enabled = false;
            }
            else if(cmbusername.Text == "ADMIN")
            {
                FormDataEntry frmd = new FormDataEntry();
                frmd.button1.Enabled = true;
            }
            this.Hide();
            FrmMain FrmMain = new FrmMain();
            FrmMain.Show();
        }
        else
        {
            MessageBox.Show("Login Failed");
        }

        con.Close();
    }
    else
    {
        MessageBox.Show("Please fill in both fields");
    }
    
}

按顺序显示我的应用程序的图片

  1. 将打开第一个登录表单
  2. 下一个仪表板(formMain)将为“用户”和“管理员”打开
  3. 接下来,当单击左侧菜单上的“初始数据条目”时,将打开一个子表单(formdataentry),如果以用户身份登录,我需要禁用删除按钮。

This is my login form

This is my dashboard from which opens after login

In this form I want the delete button to be disabled

2 个答案:

答案 0 :(得分:1)

创建一个包含登录用户类型的类:

public class User
{
    public enum enumUserType
    {
        USER,
        ADMIN
    }
    public static enumUserType UserType = enumUserType.USER;
}

然后,在您的 btnlogin_Click() 方法中,您可以设置该值:

if(cmbusername.Text == "USER")
{
    User.UserType = User.enumUserType.USER;            
}
else if(cmbusername.Text == "ADMIN")
{
    User.UserType = User.enumUserType.ADMIN;
}

最后在您的“数据输入表单”的 Load() 事件中,您可以设置按钮的状态:

public partial class FormDataEntry : Form
{
    public FormDataEntry()
    {
        InitializeComponent();
    }

    private void FormDataEntry_Load(object sender, EventArgs e)
    {
        button1.Enabled = (User.UserType == User.enumUserType.ADMIN);
    }
}

您可以在应用程序的任何位置使用 User.UserType,可能在需要知道登录用户类型的其他表单/区域中使用。

答案 1 :(得分:0)

public partial class FormDataentry: Form
{
    public static bool _userrights = false;

    private void FormDataentry_Load(object sender, EventArgs e)
    {
        if (_userrights==false)
        {
            btnDelete.Visible =false;
        }
    }
}

//frmlogin
private void btnlogin_Click(object sender, EventArgs e)
{
    if(cmbusername.Text == "USER")
    {
        FormDataEntry._userrights=false;
    }
}
相关问题