表格不会关闭

时间:2013-12-10 13:15:16

标签: c# winforms

这是C#中的Button代码,用于检查用户输入的用户名和密码的正确性,如果信息正确,登录表单(LoginForm)应该消失,另一个表单应该打开({{1} })Smart_Pharmacy打开时为什么LoginForm不会消失?

Smart_Pharmacy

3 个答案:

答案 0 :(得分:3)

  

为什么当Smart_Pharmacy打开时,LoginForm不会消失?

您正在创建LoginForm的新实例,并且您正在尝试关闭该实例。您应该尝试关闭当前打开的LoginForm。

将您的代码更改为:

private void LoginBTN_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection("Data Source=Abdullah-PC;Initial Catalog=SmartPharmacyDB;Integrated Security=True");
    SqlCommand com = new SqlCommand();
    com.Connection = con;
    com.CommandText = "select userpass from usertab where username = @username";
    com.Parameters.Add("@username", usernametxt.Text);
    con.Open();
    string returneduserpass = com.ExecuteScalar().ToString();
    con.Close();
    if (returneduserpass == userpasstxt.Text)
    {
        Smart_Pharmacy f = new Smart_Pharmacy();
        f.Show();
        this.Close(); //'this' is the current form(LoginForm)
     }
     else
     {
        MessageBox.Show("Incorrect username or password !");
     }
}

答案 1 :(得分:2)

您正在创建表单的新实例并关闭该实例,因此它不会影响您实际要关闭的表单。

假设LoginBTN_Click是表单类的成员,您只需编写:

if (returneduserpass == userpasstxt.Text)
{
    Smart_Pharmacy f = new Smart_Pharmacy();
    f.Show();
    this.Close();  // or simply 'Close()'.
}

答案 2 :(得分:2)

看起来你正在实例化一个新的LoginForm,然后立即关闭那个 尝试关闭当前活动的表单:

        if (returneduserpass == userpasstxt.Text)
        {
            Smart_Pharmacy f = new Smart_Pharmacy();
            f.Show();
            this.Close();
        }