C# 窗体登录,按照他们的角色跳转到不同的主界面

登录界面允许用户登录到系统中,用户需输入身份证号、密码,根据数据库来检查登录信息。如果登录不成功,显示合适的提示信息。成功登录后,按照他们的角色跳转到不同的主界面。 首先是登录的界面

登录的话,需要连接数据库,因为数据库我也不是特别的熟悉,所以有更好的方法可以艾特我。连接数据库的方法有很多,详细的方法可见网址:https://www.cnblogs.com/makqiq/p/5882351.html

下面就是我的方法了。首先呢,我先建立了一个类,这个类的名称叫做DB,这个类就是专门用来连接数据库,对数据库进行增删改查一系列操作的。

 public static DataTable Select(string sql)//主要用来查询数据库
        {
            DataTable dt = new DataTable();
            using (SqlConnection conn = new SqlConnection("server=localhost;database=数据库名称;user id=sa;pwd=密码"))
            {
                SqlDataAdapter data = new SqlDataAdapter(sql, conn);
                data.Fill(dt);               
            }
            return dt;
        }

在登录界面写一个专门用来登录的方法,也可直接写在登录按钮事件上

 public void LoginUser()
        {//RoleId是用来判断身份的,在数据库中用1,2,3,4对应不同的身份
            DataTable dt = DB.Select("select Idnumber,Passwords,RoleId from 表的名字 where Idnumber='" + textBox1.Text + 
"'and Passwords='" + textBox2.Text + "'"); if (dt.Rows.Count > 0) { DataRow theRow = dt.Rows[0]; switch (theRow["RoleId"].ToString()) { case "1": (new Login_panel("Competitor_Menu", textBox1.Text)).Show();//这里把输入的身份证号码也传递过去,因为登陆之后的信息需要显示出来 this.Hide(); break; case "2": (new Login_panel("Coordinator_Menu", textBox1.Text)).Show(); this.Close(); break; case "3": (new Login_panel("Administrator_Menu", textBox1.Text)).Show(); this.Close(); break; case "4": (new Login_panel("Judger_Menu", textBox1.Text)).Show(); this.Close(); break; } } else if (textBox1.Text==null) { MessageBox.Show("IdNumber is not null"); } else if (textBox2.Text == null) { MessageBox.Show("Password is not null"); } else { MessageBox.Show("IdNumber or Password is error"); } }

这里看起来有点复杂,其实很简单,这里是做的一个中间页面模板,前面也讲过了,因为头部和尾部相同,所以只需要更换中间内容即可,(new Login_panel("Competitor_Menu", textBox1.Text)).Show();//这句话的意思就是去到一个叫做Login_panel的窗体里面,需要添加以下变量:

     private string _WindowsName = "";//窗体的名字
        private string _id = "";//传过来的身份证号码
        SetPanel setPanel = new SetPanel();//实例化,这个类的作用就是更换面板的
        public Login_panel(string WindowsName,string id)
        {
            _WindowsName = WindowsName;
            _id = id;
            InitializeComponent();
        }

接下来在load事件里面:

 private void Login_panel_Load(object sender, EventArgs e)
        {
            setPanel.ShowLogin(_WindowsName, panel_Dock,_id);//把窗体名字,需要添加的面板的名字,身份证号码传到下一个页面中
        }

setPanel类中的ShowLogin方法如下:

 public void ShowLogin(String WindowsName, Panel panel, string id)
        {
            switch (WindowsName)
            {
                case "Administrator_Menu"://传递过来的窗体面工资
                    panel.Controls.Clear();//清空面板
                    Administrator_Menu am = new Administrator_Menu(id);
                    am.TopLevel = false;
                    am.FormBorderStyle = FormBorderStyle.None;//去除边框
                    panel.Controls.Add(am);//添加面板
                    am.Show();
                    break;
                case "Competitor_Menu":
                    panel.Controls.Clear();
                    Competitor_Menu cm = new Competitor_Menu(id);
                    cm.TopLevel = false;
                    cm.FormBorderStyle = FormBorderStyle.None;
                    panel.Controls.Add(cm);
                    cm.Show();
                    break;
        }
    }

这里只写了两个,只要把自己需要的填补上去就ok了。这次分享到这里就结束了,有疑问可以留言评论哦!

原文地址:https://www.cnblogs.com/madan01/p/10637585.html