c#加载和卸载表单

时间:2015-09-25 07:58:50

标签: c# forms

如何在C#中加载和卸载表单。 所以我有2个表单,登录表单和欢迎表单,所以在这里,我使用session,如果session是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 {

    }
}

2 个答案:

答案 0 :(得分:2)

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();

将创建一个全新的Login_Form实例,因此您将遇到此问题

答案 1 :(得分:0)

如果登录表单是您的主表单,您可以在欢迎表单加载事件中使用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();
    }