Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual C#-根据用户角色将用户重定向到不同的windows窗体_C#_Login_User Roles - Fatal编程技术网

Visual C#-根据用户角色将用户重定向到不同的windows窗体

Visual C#-根据用户角色将用户重定向到不同的windows窗体,c#,login,user-roles,C#,Login,User Roles,我想创建一个登录表单,根据用户的角色将用户登录重定向到两个不同的表单。我有两张表格。UserPanelFrm和2.FrmUserRole以及两个用户角色。1.管理员和2.用户。我想将Admin重定向到UserPanelFrm,将User重定向到form FrmUserRole。我研究了这个过程,但只能找到ASP.NET的有用资源 tbl\U员工: CREATE TABLE [dbo].[tbl_Staff]( [StaffID] [int] IDENTITY(1,1) NOT NULL, [Na

我想创建一个登录表单,根据用户的角色将用户登录重定向到两个不同的表单。我有两张表格。UserPanelFrm和2.FrmUserRole以及两个用户角色。1.管理员和2.用户。我想将Admin重定向到UserPanelFrm,将User重定向到form FrmUserRole。我研究了这个过程,但只能找到ASP.NET的有用资源

tbl\U员工:

CREATE TABLE [dbo].[tbl_Staff](
[StaffID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](100) NOT NULL,
[Address] [nvarchar](500) NULL,
[Phone] [nvarchar](100) NULL,
[Email] [nvarchar](100) NULL,
[JoinedDate] [date] NULL,
[Username] [nvarchar](50) NULL,
[Password] [nvarchar](max) NULL,
[CreatedDate] [date] NULL,
[Roles] [nvarchar](200) NULL,
[Status] [int] NULL
}
CREATE TABLE [dbo].[tbl_StaffRoles](
[id] [int] NULL,
[RoleDescription] [nvarchar](50) NULL
)
id RoleDescription
1 Admin
2 User
private void btnLogin_Click(object sender, EventArgs e)
{
    try
    {
        int result = uc.Login(txtUserName.Text, txtPassword.Text);
        if (result == 1)
        {
            this.Hide();
            UserPanelFrm frm = new UserPanelFrm();
            frm.ShowDialog();
            this.Close();
        }
        else
        {
            MessageBox.Show("INVALID USERNAME OR PASSWORD");
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
public int Login(String Username, String Password)
{
    try
    {
        int result = 0;
        SqlCommand cmd = new SqlCommand("Select * from tbl_Staff where Username=@Username and Password=@Password", conn);
        cmd.Parameters.AddWithValue("@Username", Username);
        cmd.Parameters.AddWithValue("@Password", Password);
        conn.Open();
        SqlDataReader dr = cmd.ExecuteReader();
        DataTable dt = new DataTable();
        dt.Load(dr);
        conn.Close();
        if (dt.Rows.Count > 0)
            result = 1;
        else
            result = 0;

        return result;
    }
    catch (Exception ex)
    {
        throw ex;
    }
}
待定员工角色:

CREATE TABLE [dbo].[tbl_Staff](
[StaffID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](100) NOT NULL,
[Address] [nvarchar](500) NULL,
[Phone] [nvarchar](100) NULL,
[Email] [nvarchar](100) NULL,
[JoinedDate] [date] NULL,
[Username] [nvarchar](50) NULL,
[Password] [nvarchar](max) NULL,
[CreatedDate] [date] NULL,
[Roles] [nvarchar](200) NULL,
[Status] [int] NULL
}
CREATE TABLE [dbo].[tbl_StaffRoles](
[id] [int] NULL,
[RoleDescription] [nvarchar](50) NULL
)
id RoleDescription
1 Admin
2 User
private void btnLogin_Click(object sender, EventArgs e)
{
    try
    {
        int result = uc.Login(txtUserName.Text, txtPassword.Text);
        if (result == 1)
        {
            this.Hide();
            UserPanelFrm frm = new UserPanelFrm();
            frm.ShowDialog();
            this.Close();
        }
        else
        {
            MessageBox.Show("INVALID USERNAME OR PASSWORD");
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
public int Login(String Username, String Password)
{
    try
    {
        int result = 0;
        SqlCommand cmd = new SqlCommand("Select * from tbl_Staff where Username=@Username and Password=@Password", conn);
        cmd.Parameters.AddWithValue("@Username", Username);
        cmd.Parameters.AddWithValue("@Password", Password);
        conn.Open();
        SqlDataReader dr = cmd.ExecuteReader();
        DataTable dt = new DataTable();
        dt.Load(dr);
        conn.Close();
        if (dt.Rows.Count > 0)
            result = 1;
        else
            result = 0;

        return result;
    }
    catch (Exception ex)
    {
        throw ex;
    }
}
tbl\u员工角色数据:

CREATE TABLE [dbo].[tbl_Staff](
[StaffID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](100) NOT NULL,
[Address] [nvarchar](500) NULL,
[Phone] [nvarchar](100) NULL,
[Email] [nvarchar](100) NULL,
[JoinedDate] [date] NULL,
[Username] [nvarchar](50) NULL,
[Password] [nvarchar](max) NULL,
[CreatedDate] [date] NULL,
[Roles] [nvarchar](200) NULL,
[Status] [int] NULL
}
CREATE TABLE [dbo].[tbl_StaffRoles](
[id] [int] NULL,
[RoleDescription] [nvarchar](50) NULL
)
id RoleDescription
1 Admin
2 User
private void btnLogin_Click(object sender, EventArgs e)
{
    try
    {
        int result = uc.Login(txtUserName.Text, txtPassword.Text);
        if (result == 1)
        {
            this.Hide();
            UserPanelFrm frm = new UserPanelFrm();
            frm.ShowDialog();
            this.Close();
        }
        else
        {
            MessageBox.Show("INVALID USERNAME OR PASSWORD");
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
public int Login(String Username, String Password)
{
    try
    {
        int result = 0;
        SqlCommand cmd = new SqlCommand("Select * from tbl_Staff where Username=@Username and Password=@Password", conn);
        cmd.Parameters.AddWithValue("@Username", Username);
        cmd.Parameters.AddWithValue("@Password", Password);
        conn.Open();
        SqlDataReader dr = cmd.ExecuteReader();
        DataTable dt = new DataTable();
        dt.Load(dr);
        conn.Close();
        if (dt.Rows.Count > 0)
            result = 1;
        else
            result = 0;

        return result;
    }
    catch (Exception ex)
    {
        throw ex;
    }
}
您好,我目前正在使用以下代码进行正常登录

LoginForm btnLogin:

CREATE TABLE [dbo].[tbl_Staff](
[StaffID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](100) NOT NULL,
[Address] [nvarchar](500) NULL,
[Phone] [nvarchar](100) NULL,
[Email] [nvarchar](100) NULL,
[JoinedDate] [date] NULL,
[Username] [nvarchar](50) NULL,
[Password] [nvarchar](max) NULL,
[CreatedDate] [date] NULL,
[Roles] [nvarchar](200) NULL,
[Status] [int] NULL
}
CREATE TABLE [dbo].[tbl_StaffRoles](
[id] [int] NULL,
[RoleDescription] [nvarchar](50) NULL
)
id RoleDescription
1 Admin
2 User
private void btnLogin_Click(object sender, EventArgs e)
{
    try
    {
        int result = uc.Login(txtUserName.Text, txtPassword.Text);
        if (result == 1)
        {
            this.Hide();
            UserPanelFrm frm = new UserPanelFrm();
            frm.ShowDialog();
            this.Close();
        }
        else
        {
            MessageBox.Show("INVALID USERNAME OR PASSWORD");
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
public int Login(String Username, String Password)
{
    try
    {
        int result = 0;
        SqlCommand cmd = new SqlCommand("Select * from tbl_Staff where Username=@Username and Password=@Password", conn);
        cmd.Parameters.AddWithValue("@Username", Username);
        cmd.Parameters.AddWithValue("@Password", Password);
        conn.Open();
        SqlDataReader dr = cmd.ExecuteReader();
        DataTable dt = new DataTable();
        dt.Load(dr);
        conn.Close();
        if (dt.Rows.Count > 0)
            result = 1;
        else
            result = 0;

        return result;
    }
    catch (Exception ex)
    {
        throw ex;
    }
}
UserClass.cs登录类:

CREATE TABLE [dbo].[tbl_Staff](
[StaffID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](100) NOT NULL,
[Address] [nvarchar](500) NULL,
[Phone] [nvarchar](100) NULL,
[Email] [nvarchar](100) NULL,
[JoinedDate] [date] NULL,
[Username] [nvarchar](50) NULL,
[Password] [nvarchar](max) NULL,
[CreatedDate] [date] NULL,
[Roles] [nvarchar](200) NULL,
[Status] [int] NULL
}
CREATE TABLE [dbo].[tbl_StaffRoles](
[id] [int] NULL,
[RoleDescription] [nvarchar](50) NULL
)
id RoleDescription
1 Admin
2 User
private void btnLogin_Click(object sender, EventArgs e)
{
    try
    {
        int result = uc.Login(txtUserName.Text, txtPassword.Text);
        if (result == 1)
        {
            this.Hide();
            UserPanelFrm frm = new UserPanelFrm();
            frm.ShowDialog();
            this.Close();
        }
        else
        {
            MessageBox.Show("INVALID USERNAME OR PASSWORD");
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
public int Login(String Username, String Password)
{
    try
    {
        int result = 0;
        SqlCommand cmd = new SqlCommand("Select * from tbl_Staff where Username=@Username and Password=@Password", conn);
        cmd.Parameters.AddWithValue("@Username", Username);
        cmd.Parameters.AddWithValue("@Password", Password);
        conn.Open();
        SqlDataReader dr = cmd.ExecuteReader();
        DataTable dt = new DataTable();
        dt.Load(dr);
        conn.Close();
        if (dt.Rows.Count > 0)
            result = 1;
        else
            result = 0;

        return result;
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

请帮助修改代码,以便我可以根据用户的角色将用户重定向到windows窗体。

修改登录方法以返回datatable(假设您在该查询中有角色列):

而且

public DataTable Login(String Username, String Password)
{
    try
    {
        SqlCommand cmd = new SqlCommand("Select * from tbl_Staff where Username=@Username and Password=@Password", conn);
        cmd.Parameters.AddWithValue("@Username", Username);
        cmd.Parameters.AddWithValue("@Password", Password);
        conn.Open();
        SqlDataReader dr = cmd.ExecuteReader();
        DataTable dt = new DataTable();
        dt.Load(dr);
        conn.Close();
        return dt;
    }
    catch (Exception ex)
    {
        throw ex;
    }
}
您应该检查tbl_员工中的“角色”:

 public int Login(String Username, String Password)
        {
            try
            {
                SqlCommand cmd = new SqlCommand("Select * from tbl_Staff where Username=@Username and Password=@Password", conn);
                cmd.Parameters.AddWithValue("@Username", Username);
                cmd.Parameters.AddWithValue("@Password", Password);
                conn.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                DataTable dt = new DataTable();
                dt.Load(dr);
                conn.Close();
                if (dt.Rows.Count > 0)
                {
                    string role = dt.Rows[0]["Roles"].ToString();

                    if (role.Equals("User"))
                    {
                        UserPanelFrm frm = new UserPanelFrm();
                        frm.ShowDialog();
                        this.Close();
                        return 1;
                    }
                    else if (role.Equals("Admin"))
                    {
                        FrmUserRole fur = new FrmUserRole();
                        fur.ShowDialog();
                        this.Close();
                        return 1;
                    }
                }

                return 0;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        private void btnLogin_Click(object sender, EventArgs e)
        {
            try
            {
                int result = uc.Login(txtUserName.Text, txtPassword.Text);
                if (result == 0)
                {
                    MessageBox.Show("INVALID USERNAME OR PASSWORD");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

非常感谢你的建议。成功了。现在,当以“Admin”角色登录时,我会得到UserPanelfrm,而以“user”角色登录时,我会得到FrmUserPanel。谢谢你的建议。这有助于理解逻辑。