想要个比较正规了登陆和主界面的登陆代码,
刚才baidu一下,什么东西都有,而且都是重复的
感觉用起hide(),close()比较乱,看看高手的代码,学习下

解决方案 »

  1.   

    一个简单的Login窗体,其它的如限制登录次数或用户信息传递等功能自己在frmLogin.cs中扩展Program.cs
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        frmLogin myLogin = new frmLogin();
        if (myLogin.ShowDialog() == DialogResult.OK)
        {
            Application.Run(new frmMain());
        }
        //else
        //{
        //    MessageBox.Show("登录失败!");
        //}
    }frmLogin.cs
    private void btnOK_Click(object sender, EventArgs e)
    {
        //可以到数据库中验证
        if (txtUserName.Text == "test" && txtUserPWD.Text == "test")
        {
            this.DialogResult = DialogResult.OK;
        }
        else
        {
            MessageBox.Show("错误的用户名或密码!");
            txtUserName.Focus();
        }
    }
    private void btnCancel_Click(object sender, EventArgs e)
    {
        this.DialogResult = DialogResult.Cancel;
    }
    private void frmLogin_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (this.DialogResult != DialogResult.Cancel && this.DialogResult != DialogResult.OK)
            e.Cancel = true;
    }
      

  2.   

        protected void SubmitBtn_Click(object sender, EventArgs e)
        {
     
            SqlConnection con = db.con();
            string queryStr = "select * from users where user_id='" + Request.Form["UserID"] + "'";
            SqlDataAdapter userAdapter = new SqlDataAdapter(queryStr,con);
            DataSet userSet = new DataSet();
            userAdapter.Fill(userSet, "users");
            if (userSet.Tables["users"].Rows.Count == 0)
            {
                Message.Text = "没有这个用户,请重新输入";
                return;
            }
            if (UserPassword.Value != userSet.Tables["users"].Rows[0]["user_pwd"].ToString())
            {
                Message.Text = "密码输入错误,请重新输入";
                return;
            }
            FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(UserID.Value, false, 1800);
            FormsAuthentication.RedirectFromLoginPage(UserID.Value, false);
           // Session["userid"] = Request.Form["UserID"];
            return;
            
        }
      

  3.   

    protected void btnLogin_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
            lblMessage.Text = string.Empty;        if(ValidateLogin(txtUserName.Text.Trim(), txtPassword.Text.Trim())
            {
                //登陆成功操作
            }
        }
    }private static bool ValidateLogin(string username, string password)
    {
        SqlConnection cn = new SqlConnection(@"server=.\sqlExpress;uid=sa;pwd=;database=Wish");
        SqlCommand cmd = new SqlCommand("select 1 from [Users] where username = @UserName and [password] = @CryptPassword", cn);
        cmd.Parameters.Add("@UserName", SqlDbType.VarChar).Value = txtUserName.Text.Trim();
        cmd.Parameters.Add("@CryptPassword", SqlDbType.VarChar).Value = Tool.EncryptPassword(txtPassword.Text.Trim());    try
        {
            cn.Open();
            object o = cmd.ExecuteScalar();
            if (o != null)
            {
                return true;
            }
        }
        catch (Exception)
        {
            return false;
        }
        finally
        {
            if (cn.State == ConnectionState.Open)
                cn.Close();
        }
        return false;
    }
      

  4.   

    有关界面传参,简单的可使用构造函数:
    if (myLogin.ShowDialog() == DialogResult.OK)
        {
            Application.Run(new frmMain(这里写要传的参数));当然记得在frmMain里定义带参数的构造函数
        }