[英]C# issues with closing the form
在成功登录后切换到第二表单时,我在关闭登录表单时遇到问题。 我尝试了.close
和.dispose
,但登录表单无法关闭。 以下是我的代码。
namespace Lead_Management_Pro
{
public partial class FrmLogin : Form
{
Form1 mainform;
public FrmLogin()
{
InitializeComponent();
}
public void button1_Click(object sender, EventArgs e)
{
FrmLogin frm = new FrmLogin();
mainform = new Form1();
string[] v;
OleDbConnection conn = new OleDbConnection("File Name=E:\\Vivek\\License Manager\\License Manager\\login.udl");
try
{
conn.Open();
string query = "EXEC dbo.checkuser '" + username.Text+ "', '" + password.Text+"'";
OleDbCommand cmd = new OleDbCommand(query, conn);
string s = Convert.ToString(cmd.ExecuteScalar());
v= s.Split('|');
if (v[0]=="0")
{
frm.Close();
mainform.ShowDialog();
}
else
{
MessageBox.Show("Please enter correct user credentials and try again");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
conn.Close();
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
请帮助我纠正此问题。
frm.Close()
关闭您正在创建的实例。 您应该使用this.Close();
就像您在button2_Click
事件中所做的一样
更新2
FrmLogin
是您的启动表单。 尝试隐藏它:
if (v[0]=="0")
{
mainform.Show();
this.Hide();
}
在我的一个项目中,我遇到了类似的问题。 问题在于,如果您以第一个表单的形式打开登录表单,它将被视为主要表单,并且当您关闭登录表单时,由于关闭了主表单,程序将开始关闭。
您需要做的是从Form1主表单的上下文中打开登录表单,而不是从登录表单的上下文中打开主表单。
用伪代码:
public Form1(){
if(not logged in)
{
FrmLogin login = new FrmLogin();
login.ShowDialog();//This blocks the further execution of the Form1 constructor until you're out of the window
}
InitializeCompent();
}
在登录表单中处理登录过程,并在登录后在其中关闭表单。它将自动继续到Form1构造函数的其余部分,并从那里打开它。 您可能希望在执行登录后检查是否已实际登录,如果未登录则将其关闭。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.