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