c#装载和卸载表格

c#装载和卸载表格,c#,forms,C#,Forms,如何在C#中加载和卸载表单。 所以我有两个表单,登录表单和欢迎表单,所以在这里,我使用会话,如果会话是1,当登录表单加载时,它会自动关闭并加载欢迎表单 我使用此代码,但它不起作用,登录表单仍然打开 private void Login_Form_Load_1(object sender, EventArgs e) { string st = "1"; SqlConnection conn = new SqlConnection(); conn.ConnectionStri

如何在C#中加载和卸载表单。 所以我有两个表单,登录表单和欢迎表单,所以在这里,我使用会话,如果会话是1,当登录表单加载时,它会自动关闭并加载欢迎表单

我使用此代码,但它不起作用,登录表单仍然打开

private void Login_Form_Load_1(object sender, EventArgs e)
{
    string st = "1";
    SqlConnection conn = new SqlConnection();
    conn.ConnectionString = @"Data Source=GATEWAY-PC\SQLSERVER;Initial Catalog=train_system;Integrated Security=True";
    SqlCommand cmd = new SqlCommand("SELECT * FROM employer WHERE session='" + st + "'",conn);
    conn.Open();
    SqlDataReader dr1;
    dr1 = cmd.ExecuteReader();
    if (dr1.Read())
    {

        string dr = dr1[2].ToString();
        if (dr == "1")
        {
            Form1 fm = new Form1();
            fm.Show();
            Login_Form lf = new Login_Form();
            lf.Close();
        }
        else {

        }
    }
    else {

    }
}

this
关键字引用类的当前实例,并且还用作扩展方法的第一个参数的修饰符

if (dr1.Read())
{
    string dr = dr1[2].ToString();
    if (dr == "1")
    {
        this.Close();
        Form1 fm = new Form1();
        fm.Show();
    }
}
这行代码

Login_Form lf = new Login_Form();
lf.Close();

将创建登录表单的全新实例,因此您将面临此问题

如果登录表单是您的主表单,您可以使用
this.hide()隐藏它代码,然后您可以在欢迎表单上创建一个结束事件,在那里您可以使用
Application.Exit()关闭应用程序中的所有内容

    if (dr1.Read())
{
    string dr = dr1[2].ToString();
    if (dr == "1")
    {
        Form1 fm = new Form1();
        fm.Show();
        this.hide();
    }
}

private void Form_FormClosing(object sender, FormClosingEventArgs e)
    {
        Application.Exit();
    }

小心,你的代码看起来很容易受到sql注入的攻击。是的!!相关代码可能会影响窗体的显示、关闭和隐藏。